Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle-Fremdschlüssel

Ich denke, Sie möchten Folgendes. Bitte beachten Sie, dass Sie wahrscheinlich VARCHAR2 verwenden sollten statt VARCHAR im Orakel. Sie funktionieren im Moment gleich, aber es besteht die Möglichkeit, dass Oracle die Funktionalität für VARCHAR ändert um es mit dem ANSI-Standard in Einklang zu bringen (in dem leere Zeichenfolgen '' werden von NULL unterschieden s ... aber ich schweife ab):

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

Und dann:

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

Etwas seltsam ist, dass die Spalte surname heißt im CLIENT und b_surname in BOSS .

Wenn Sie möchten b_surname in BOSS um sich auf surname zu beziehen im CLIENT -- dann müssen Sie CLIENT.surname erstellen ein Primärschlüssel oder zumindest eindeutig.