Oracle/PLSQL: claves foráneas

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

Oracle/PLSQL: claves foráneas

Este tutorial de Oracle explica cómo usar clave externa Sintaxis y ejemplos en Oracle.

¿Qué son las claves foráneas en Oracle?

Las claves foráneas son un método para hacer cumplir la integridad referencial en una base de datos Oracle. Una clave externa significa que un valor en una tabla también debe aparecer en la otra tabla.

La tabla a la que se hace referencia se denomina tabla principal y la tabla con la clave externa se denomina tabla secundaria. La clave externa en la tabla secundaria generalmente se refiere a la clave principal en la tabla principal.

Las claves foráneas se pueden definir en la sentencia CREATE TABLE o en la sentencia ALTER TABLE.

Usando la sentencia CREATE TABLE

sintaxis

La sintaxis para crear una clave externa utilizando la declaración CREATE TABLE es:

CREATE TABLE table_name
(
  column1 datatype null/not null,
  column2 datatype null/not null,
  ...

  CONSTRAINT fk_column
    FOREIGN KEY (column1, column2, ... column_n)
    REFERENCES parent_table (column1, column2, ... column_n)
);

ejemplo

CREATE TABLE supplier
( supplier_id numeric(10) not null,
  supplier_name varchar2(50) not null,
  contact_name varchar2(50),
  CONSTRAINT supplier_pk PRIMARY KEY (supplier_id)
);

CREATE TABLE products
( product_id numeric(10) not null,
  supplier_id numeric(10) not null,
  CONSTRAINT fk_supplier
    FOREIGN KEY (supplier_id)
    REFERENCES supplier(supplier_id)
);

En este ejemplo, creamos una clave principal en la tabla proveedor denominada proveedor_pk. Contiene un solo campo: el campo id_proveedor. Luego creamos una clave externa en la tabla de productos llamada fk_supplier que hace referencia a la tabla de proveedores según el campo de ID del proveedor.

También podemos crear una clave externa con múltiples campos, como en el siguiente ejemplo:

CREATE TABLE supplier
( supplier_id numeric(10) not null,
  supplier_name varchar2(50) not null,
  contact_name varchar2(50),
  CONSTRAINT supplier_pk PRIMARY KEY (supplier_id, supplier_name)
);

CREATE TABLE products
( product_id numeric(10) not null,
  supplier_id numeric(10) not null,
  supplier_name varchar2(50) not null,
  CONSTRAINT fk_supplier_comp
    FOREIGN KEY (supplier_id, supplier_name)
    REFERENCES supplier(supplier_id, supplier_name)
);

En este ejemplo, nuestra clave externa llamada fk_foreign_comp hace referencia a la tabla Proveedores en función de dos campos: los campos IdProveedor y NombreProveedor.

Usando la sentencia ALTER TABLE

sintaxis

La sintaxis para crear una clave externa en una instrucción ALTER TABLE es:

ALTER TABLE table_name
ADD CONSTRAINT constraint_name
   FOREIGN KEY (column1, column2, ... column_n)
   REFERENCES parent_table (column1, column2, ... column_n);

ejemplo

ALTER TABLE products
ADD CONSTRAINT fk_supplier
  FOREIGN KEY (supplier_id)
  REFERENCES supplier(supplier_id);

En este ejemplo, hemos creado una clave externa denominada fk_supplier que hace referencia a la tabla de proveedores en función del campo id_proveedor.

También podemos crear una clave externa con múltiples campos, como en el siguiente ejemplo:

ALTER TABLE products
ADD CONSTRAINT fk_supplier
  FOREIGN KEY (supplier_id, supplier_name)
  REFERENCES supplier(supplier_id, supplier_name);
(Visited 13 times, 1 visits today)