sql >> Databasteknik >  >> RDS >> Oracle

Oracle främmande nyckel

Jag tror att du vill ha följande. Observera att du förmodligen bör använda VARCHAR2 istället för VARCHAR i Oracle. De fungerar likadant för tillfället men det finns en möjlighet att Oracle kommer att ändra funktionaliteten för VARCHAR för att få den i linje med ANSI-standarden (där tomma strängar '' särskiljs från NULL s ... men jag avviker):

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

Och sedan:

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

Det är lite konstigt att kolumnen heter surname i CLIENT och b_surname i BOSS .

Om du vill ha b_surname i BOSS för att hänvisa till surname i CLIENT -- då måste du göra CLIENT.surname en primärnyckel, eller åtminstone unik.




  1. Efterstående noll

  2. Rekursiv inkluderar Sequelize?

  3. Hur mappar man tidsstämpelkolumnen till JPA-typ?

  4. Uppdatera satsen med hjälp av en WHERE-sats som innehåller kolumner med null-värden