Una definición de llave foránea (definición_llave_foránea) se usa para hacer corresponder los campos llaves primarias (ref_columna) definidos en otra tabla con el fin de preservar la integridad de los datos. La restricción FOREIGN KEY permite pasar las referencias de una o más columnas (ref_columna) a definir como llaves foráneas (correspondientes a las claves primarias de otra tabla).
La cláusula CONSTRAINT nom_sql se utiliza para nombrar la restricción FOREIGN KEY.
La cláusula REFERENCES permite especificar los campos llaves primarias fuente correspondientes en la otra tabla (designada por nom_sql). Puede omitir la lista de campos (argumentos ref_columna) si la tabla (nom_sql) definida en la cláusula REFERENCES tiene una llave primaria que se va a utilizar como la clave correspondiente para la restricción llave foránea.
La cláusula opcional ON DELETE CASCADE especifica que cuando se elimina una línea de la tabla padre (que contiene los campos llaves primarias), también se elimina de las líneas asociadas con la línea de la tabla hijo (que contiene los campos llaves foráneas). Pasar la cláusula opcional ON DELETE RESTRICT evita la eliminación de datos de una tabla si otras tablas las referencian.
La cláusula opcional ON UPDATE CASCADE especifica que siempre que se actualiza una línea en la tabla padre (que contiene los campos de llaves primarias), también se actualiza en las líneas asociadas a esa línea de la tabla hijo (que contiene los campos llaves foráneas). Pasar la cláusula opcional ON UPDATE RESTRICT evita la actualización de los datos de una tabla si otras tablas las referencian.
Tenga en cuenta que si se pasan las dos cláusulas ON DELETE y ON UPDATE, ambas deben ser del mismo tipo (por ejemplo, ON DELETE CASCADE y ON UPDATE CASCADE o ON DELETE RESTRICT y ON UPDATE RESTRICT).
Si no se pasan ni la cláusula ON DELETE ni la ON UPDATE, entonces CASCADE se utiliza como la regla por defecto.
Este ejemplo crea la tabla ORDENES luego define la columna SID_Clientes como llave foránea, asociada a la columna SID de la tabla CLIENTES:
CREATE TABLE ORDENES
(ID_Orden INT32,
SID_Clientes INT32,
Cantidad NUMERIC,
PRIMARY KEY (ID_Comando),
CONSTRAINT fk_1 FOREIGN KEY (SID_Clientes) REFERENCES CLIENTES(SID));