Als je FK toevoegt, koppel je een kolom als kind van de tabel die u aan het maken bent, naar zijn ouder van de oudertafel. Daarom moet u de naam van de onderliggende kolom opgeven, evenals de naam van de bovenliggende kolom.
De algemene syntaxis is
CREATE TABLE table_name
(
column1 datatype null/not null,
column2 datatype null/not null,
...
CONSTRAINT fk_column
FOREIGN KEY (column1, column2, ... column_n)
REFERENCES parent_table (column1, column2, ... column_n)
);
Merk op dat de kolommen tussen FOREIGN KEY
haakjes, komen uit de tabel die u aan het maken bent, terwijl de kolommen tussenN REFERENCES PARENT_TABLE
zijn van de bovenliggende tabel.
U heeft geen kolom met de naam CollectibleNum
in jeDiecastItems
. Daarom werkt het volgende prima door zo'n kolom toe te voegen:
CREATE TABLE collectibles
(
collectiblenum NUMBER(10) NOT NULL,
CONSTRAINT collectibles_pk PRIMARY KEY(collectiblenum)
);
CREATE TABLE diecastitems
(
diecastname VARCHAR2(45) NOT NULL,
diecastcopy NUMBER(2) NOT NULL,
diecastscale VARCHAR2(25),
colorscheme VARCHAR2(25),
diecastyear NUMBER(4),
collectiblenum NUMBER(10), --added column
CONSTRAINT diecastitem_pk PRIMARY KEY(diecastname, diecastcopy),
CONSTRAINT diecastitem_collectible_fk FOREIGN KEY(collectiblenum)
REFERENCES collectibles(collectiblenum)
);
FIDDLE