¿Como crear una condición Constraint Oracle Foreign key o Llave foránea?



Es una instrucción que permite conservar la integridad de los datos, cuando se le indica a un campo de una tabla que es llave foránea, es como si el campo de esa tabla “fuera una lista de valores” en la que solo se pueden ingresar los valores que contiene otro campo en otra tabla, el campo de esa tabla debe ser Primary Key.

Se puede crear el constraint de dos formas, utilizando la instrucción Alter Table o al momento de crear la tabla.

Creando la tabla
CREATE TABLE CIUDAD (
       CODIGO_CIUDAD NUMBER,
       CODIGO_PAIS     NUMBER,
       NOMBRE_CIUDAD  VARCHAR2(100),
       CONSTRAINT  FK_CIUDADPAIS FOREIGN KEY (CODIGO_PAIS)
       REFERENCES PAIS(CODIGO_PAIS)
);

Modificando la tabla
ALTER TABLE CIUDAD ADD CONSTRAINT FK_CIUDADPAIS FOREIGN KEY(CODIGO_PAIS) REFERENCES PAIS(CODIGO_PAIS);

Siempre que se quiera ingresar un valor en el campo llave foránea, el valor debe de existir en el campo primary key de la otra tabla, de no ser así generar un error “ORA-02291: integrity constraint (string.string) violated - parent key not found”.

Una tabla puede tener una o más llaves foráneas.

También se pueden crear llaves foráneas compuestas por dos o más campos, la llave foránea compuesta solo es posible si la primary key de la otra tabla también es una llave primaria compuesta.

¿Como crear una condición Constraint Oracle Primary Key o Llave Primaria?


Es una restricción que le permite a una tabla identificar un campo como único, la llave primaria evita que se duplique el valor de ese campo en otros registros de la tabla.

La instrucción para asignarle a una tabla el constraint primary key se puede ejecutar al momento de crear la tabla o realizando una modificación a la misma con el comando el alter table.


Creando la tabla
CREATE TABLE PAIS (
       CODIGO_PAIS NUMBER PRIMARY KEY,
       NOMBRE_PAIS VARCHAR2(100),
       CAPITAL VARCHAR2(100)
);
CREATE TABLE PAIS (
       CODIGO_PAIS NUMBER,
       NOMBRE_PAIS VARCHAR2(100),
       CAPITAL VARCHAR2(100),
       PRIMARY KEY (CODIGO_PAIS));


Modificando la tabla
ALTER TABLE PAIS ADD CONSTRAINT PK_PAIS PRIMARY KEY(CODIGO_PAIS);

Ejemplo valido

Ejemplo no valido
CODIGO_PAIS
NOMBRE_PAIS
CAPITAL

CODIGO_PAIS
NOMBRE_PAIS
CAPITAL
1
COLOMBIA
BOGOTÁ

1
COLOMBIA
BOGOTÁ
2
CHILE
SANTIAGO

3
CHILE
SANTIAGO
3
BOLIVIA
SUCRE

3
BOLIVIA
SUCRE
 
Si intentamos ingresar un registro y el valor del campo CODIGO_PAIS ya existe se generara un error  “ORA-00001: unique constraint primary key violated”. 

En una tabla solo puede existir una llave primaria, por lo general se utiliza la llave primaria en un consecutivo o en un campo de identificación numérico preferiblemente.