Oracle
 sql >> Base de données >  >> RDS >> Oracle

Clé étrangère Oracle

Je pense que vous voulez ce qui suit. Veuillez noter que vous devriez probablement utiliser VARCHAR2 plutôt que VARCHAR dans Oracle. Ils fonctionnent de la même manière pour le moment mais il est possible qu'Oracle modifie la fonctionnalité de VARCHAR pour le mettre en conformité avec la norme ANSI (dans laquelle les chaînes vides '' se distinguent de NULL s ... mais je m'égare):

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 );

Et ensuite :

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

C'est un peu bizarre que la colonne s'appelle surname dans CLIENT et b_surname dans BOSS .

Si vous voulez b_surname dans BOSS faire référence à surname dans CLIENT -- alors vous devez faire CLIENT.surname une clé primaire, ou au moins unique.