Uma definição de chave externa (definição_chave_externa) se usa para fazer corresponder os campos chaves primárias (ref_coluna) definidos em outra tabela com a função de preservar a integridade dos dados. A restrição FOREIGN KEY permite passar as referencias de uma ou mais colunas (ref_coluna) a definir como chaves externas (correspondentes as chaves primárias de outra tabela).
A cláusula CONSTRAINT nom_sql se utiliza para nomear a restrição FOREIGN KEY.
A cláusula REFERENCES permite especificar os campos chaves primárias fonte correspondentes na outra tabela (designada por nom_sql). Pode omitir a lista de campos (argumentos ref_coluna) se a tabela (nom_sql) definida na cláusula REFERENCES tem uma chave primária que será utilizada como a chave correspondente para a restrição chave externa.
A cláusula opcional ON DELETE CASCADE especifica que quando se elimina uma linha da tabela pai (que contém os campos chaves primárias), também é excluída das linhas associadas com a linha da tabela filho (que contém os campos chaves externas). Passar a cláusula opcional ON DELETE RESTRICT evita a eliminação de dados de uma tabela se outras tabelas as referenciam.
A cláusula opcional ON UPDATE CASCADE especifica que sempre que se atualiza uma linha na tabela pai (que contém os campos de chaves primárias), também se atualiza nas linhas associadas a essa linha da tabela filho (que contém os campos chaves externas). Passar a cláusula opcional ON UPDATE RESTRICT evita a atualização dos dados de uma tabela se outras tabelas as referenciam.
Tenha em conta que se passadas as duas cláusulas ON DELETE e ON UPDATE, ambas devem ser do mesmo tipo (por exemplo, ON DELETE CASCADE e ON UPDATE CASCADE ou ON DELETE RESTRICT e ON UPDATE RESTRICT).
Se não passam nem a cláusula ON DELETE nem a ON UPDATE, então CASCADE se utiliza como a regra por padrão.
Este exemplo cria a tabela ORDENES depois define a coluna SID_Clientes como chave externa, associada a coluna SID da tabela CLIENTES:
CREATE TABLE ORDENES
(ID_Ordem INT32,
SID_Clientes INT32,
Quantidade NUMERIC,
PRIMARY KEY (ID_Comando),
CONSTRAINT fk_1 FOREIGN KEY (SID_Clientes) REFERENCES CLIENTES(SID));