Zdefiniowanie klucza obcego skutkuje tym, że
• w tabeli z kluczem obcym nie można wstawić wiersza, którego wartość w kolumnie (zestawie kolumn) z klucza obcego nie ma odpowiedników w tabeli obcej,
• w tabeli z kluczem obcym nie można zmodyfikować wiersza, tak, aby wartość w kolumnie (zestawie kolumn) z klucza obcego nie ma odpowiedników w tabeli obcej,
• z tabeli obcej nie można usunąć wiersza, do którego odnoszą się jakiekolwiek wiersze z tabeli z kluczem obcym.
Uwaga: Ostatnią własność (niedopuszczanie do usuwania wierszy z tabeli obcej) można zamienić na polecenie usuwania z wraz z wierszem wszystkich odwołujących się do niego wierszy w tabeli z kluczem obcym. W tym celu na końcu klauzuli CONSTRAINT definiującej klucz obcy należy umieścić dyrektywę ON DELETE CASCADE.
W tabeli emp występują dwa związki. Jeden - przez numer departamentu - z tabelą dept, drugi - przez numer szefa - z samą tabelą emp. Chcemy, aby usunięcie departamentu powodowało także usunięcie wszystkich pracowników tego departamentu. Możemy to zdefiniować poprzez polecenie:
CREATE TABLE EMP ( EMPNO ENAME JOB MGR
HIREDATE
SAL
COMM
DEPTNO
13-16
NUMBER(4) CONSTRAINT EMP_PRIMARY_KEY PRIMARY KEY , VARCHAR2(10),
VARCHAR2(9),
NUMBER(4) CONSTRAINT EMP_SELF_KEY REFERENCES EMP (EMPNO),
DATĘ,
NUMBER(7,2),
NUMBER(7,2),
NUMBER(2) NOT NULL
CONSTRAINT EMP_FOREIGN_KEY REFERENCES DEPT ON DELETE CASCADE);
Język definiowania danych, słownik systemowy