Oracle PRIMARY KEY

Resumen: en este tutorial, aprenderá a usar la restricción PRIMARY KEY de Oracle para administrar la clave principal de una tabla, hemos utilizado la versión Oracle 12c para poner en practica estos ejemplos.

Introducción a la clave primaria

Una clave principal es una columna de una combinación de columnas en una tabla que identifica de forma única una fila en la tabla.

Las siguientes son reglas que hacen que una columna sea una clave principal:

  • Una columna de clave primaria no puede contener un valor NULL o una cadena vacía.
  • Un valor de clave principal debe ser único en toda la tabla.
  • Un valor de clave principal no debe cambiarse con el tiempo.

De acuerdo con estas reglas, las siguientes son las recomendaciones para las claves primarias:

  • Primero, la clave principal debería carecer de significado. A veces, es posible que desee utilizar datos significativos, que se consideran únicos, para las claves principales, por ejemplo, número de seguro social (SSN), número de identificación del vehículo (VIN), correo electrónico y número de teléfono. Sin embargo, no sabe cuándo cambia el correo electrónico o el número de teléfono o cuando otra persona lo reutiliza. En tales casos, creará muchos problemas de datos. En el mundo de las bases de datos, las claves artificiales se conocen como claves sustitutas que son opuestas a las claves primarias naturales.
  • En segundo lugar, las claves primarias deben ser compactas. Las claves primarias suelen ser numéricas porque Oracle normalmente procesa los números más rápido que cualquier otro tipo de datos.

Se considera una buena práctica tener una clave principal en cada tabla, aunque no es obligatorio en Oracle.

Para crear una clave principal en una tabla, use la restricción PRIMARY KEY.

Ejemplos de restricciones PRIMARY KEY de Oracle

Normalmente, crea una clave principal para una tabla cuando crea esa tabla. Además, puede agregar una clave principal a una tabla después del hecho utilizando la instrucción ALTER TABLE.

Crear una clave principal que consta de una columna

La siguiente instrucción CREATE TABLE crea el purchase_orderstable:

CREATE TABLE purchase_orders (
    po_nr NUMBER PRIMARY KEY,
    vendor_id NUMBER NOT NULL,
    po_status NUMBER(1,0) NOT NULL,
    created_at TIMESTAMP WITH TIME ZONE NOT NULL 
);

La tabla purchase_orders tiene cuatro columnas: número de orden de compra (po_nr), ID de proveedor (vendor_id), estado de la orden de compra (po_status) y la marca de tiempo (created_at) de la cual se crea la orden de compra.

En esta tabla, defina la columna po_nr como la clave principal utilizando la cláusula PRIMARY KEY.

Tenga en cuenta que la cláusula PRIMARY KEY implícitamente hace que po_nrcolumn NOT NULL, por lo que no tiene que definir la columna como:

po_nr NUMBER NOT NULL PRIMARY KEY

La restricción PRIMARY KEY en este ejemplo es una restricción en línea porque está en la misma línea que la columna po_nr.

Considere la siguiente declaración.

CREATE TABLE purchase_orders (
    po_nr NUMBER,
    vendor_id NUMBER NOT NULL,
    po_status NUMBER(1,0) NOT NULL,
    created_at TIMESTAMP WITH TIME ZONE NOT NULL,
    CONSTRAINT pk_purchase_orders PRIMARY KEY(po_nr)
);

Este ejemplo utilizó la restricción PRIMARY KEY como restricción de tabla. Note la siguiente cláusula:
CONSTRAINT pk_purchase_orders PRIMARY KEY(po_nr)
Además, asignamos explícitamente a la restricción PRIMARY KEY un nombre pk_purchase_orders.

Crear una clave principal que consta de varias columnas

La siguiente declaración crea la tabla de artículos de línea de orden de compra:

CREATE TABLE purchase_order_items (
    po_nr NUMBER NOT NULL,
    item_nr NUMBER NOT NULL,
    product_id NUMBER NOT NULL,  
    quantity NUMBER NOT NULL,
    purchase_unit NUMBER NOT NULL,
    buy_price NUMBER (9,2) NOT NULL,
    delivery_date DATE,
    PRIMARY KEY (po_nr, item_nr)
);

En este ejemplo, la clave principal de la tabla purchase_order_items consta de dos columnas: po_nr y item_nr. Significa que la combinación de valores de estas columnas identifica de forma única una línea de pedido de compra.

Este ejemplo no usó la cláusula CONSTRAINT para asignar explícitamente un nombre a la restricción PRIMARY KEY. Por lo tanto, Oracle asignó implícitamente a la restricción de clave principal un nombre generado por el sistema, como SYS_C0010617.

Agregar una clave principal a una tabla

A veces, es posible que desee agregar una restricción de clave principal a una tabla existente. Para hacerlo, use la instrucción ALTER TABLE de la siguiente manera:

ALTER TABLE table_name
ADD CONSTRAINT constraint_name 
PRIMARY KEY (column1, column2, ...);

El siguiente ejemplo crea la tabla de proveedores primero y luego le agrega una restricción de clave primaria:

CREATE TABLE vendors (
    vendor_id NUMBER,
    vendor_name VARCHAR2(255) NOT NULL,
    address VARCHAR2(255) NOT NULL
);

ALTER TABLE vendors 
ADD CONSTRAINT pk_vendors PRIMARY KEY (vendor_id);

Eliminación de una restricción PRIMARY KEY de Oracle

Rara vez eliminará una restricción PRIMARY KEY de una tabla. Si tiene que hacerlo, utilice la siguiente instrucción ALTER TABLE.

ALTER TABLE table_name
DROP CONSTRAINT primary_key_constraint_name;

Por ejemplo, puede eliminar la restricción de clave principal de la tabla de proveedores de la siguiente manera:

ALTER TABLE vendors
DROP CONSTRAINT pk_vendors;

Es posible utilizar la siguiente declaración para eliminar la clave principal de una tabla:

ALTER TABLE table_name
DROP PRIMARY KEY;

Por ejemplo:

ALTER TABLE vendors
DROP PRIMARY KEY;

Habilitar / deshabilitar una restricción PRIMARY KEY de Oracle

Para mejorar el rendimiento al cargar una gran cantidad de datos en una tabla o actualizar datos masivos, puede deshabilitar temporalmente la restricción PRIMARY KEY.

Para deshabilitar una restricción PRIMARY KEY de una tabla, use la instrucción ALTER TABLE:

ALTER TABLE table_name
DISABLE CONSTRAINT primary_key_constraint_name;
Or
ALTER TABLE table_name
DISABLE PRIMARY KEY;

Por ejemplo, para deshabilitar la restricción de clave principal de la tabla purchase_orders, utilice la siguiente declaración:

ALTER TABLE purchase_orders
DISABLE CONSTRAINT pk_purchase_orders;
or
ALTER TABLE purchase_orders
DISABLE PRIMARY KEY;

Para habilitar una restricción de clave primaria, use la siguiente instrucción ALTER TABLE:

ALTER TABLE table_name
ENABLE CONSTRAINT primary_key_constraint_name;
or
ALTER TABLE table_name
ENABLE PRIMARY KEY;

El siguiente ejemplo habilita la restricción PRIMARY KEY de la tabla purchase_orders:

ALTER TABLE purchase_orders
ENABLE CONSTRAINT pk_purchase_orders;
or
ALTER TABLE purchase_orders
ENABLE PRIMARY KEY;

En este tutorial, ha aprendido a usar la restricción PRIMARY KEY de Oracle para crear, agregar, deshabilitar, habilitar y dropiar(borrar) una clave principal de una tabla.

11 comentarios en “Oracle PRIMARY KEY”

  1. Pingback: Introducción a SQL - DBandTech.com

  2. Hey there! Someone in my Facebook group shared this site with us so I came to give it a look.

    I’m definitely loving the information. I’m book-marking and
    will be tweeting this to my followers! Terrific blog
    and great style and design. I saw similar here: Sklep online

  3. Howdy! Do you know if they make any plugins to help with SEO?

    I’m trying to get my blog to rank for some targeted keywords but I’m not seeing very good success.
    If you know of any please share. Cheers! You
    can read similar art here: Sklep internetowy

  4. Hi! Do you know if they make any plugins to assist with SEO?
    I’m trying to get my website to rank for some targeted
    keywords but I’m not seeing very good gains. If you know of any please share.
    Many thanks! You can read similar blog here: Backlink Building

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *