Oracle
 sql >> Database >  >> RDS >> Oracle

Chiave esterna Oracle

Penso che tu voglia quanto segue. Tieni presente che probabilmente dovresti usare VARCHAR2 anziché VARCHAR in Oracle. Al momento funzionano allo stesso modo, ma esiste la possibilità che Oracle cambi la funzionalità per VARCHAR per allinearlo allo standard ANSI (in cui le stringhe vuote '' sono distinti da NULL s ... ma sto divagando):

CREATE TABLE client
( id NUMBER(10) NOT NULL PRIMARY KEY
, name VARCHAR2(30) NOT NULL
, surname VARCHAR2(30) NOT NULL
, phone NUMBER(11) NOT NULL
, email VARCHAR2(70) );

CREATE TABLE boss
( b_surname VARCHAR2(30) NOT NULL PRIMARY KEY
, b_Name VARCHAR2(30) NOT NULL );

E poi:

ALTER TABLE client ADD CONSTRAINT boss_client_fk FOREIGN KEY (surname) REFERENCES boss (b_surname);

È un po' strano che la colonna si chiami surname in CLIENT e b_surname in BOSS .

Se vuoi b_surname in BOSS per fare riferimento a surname in CLIENT -- quindi devi creare CLIENT.surname una chiave primaria, o almeno univoca.