Når du tilføjer FK, linker du en kolonne som barn fra den tabel, du opretter, til dens forælder fra forældretabellen. Derfor skal du angive navnet på den underordnede kolonne samt det overordnede kolonnenavn.
Den generelle syntaks er
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)
);
Bemærk, at kolonnerne mellem FOREIGN KEY
parentes er fra den tabel, du opretter, mens kolonnerne mellem REFERENCES PARENT_TABLE
er fra forældretabellen.
Du har ikke en kolonne kaldet CollectibleNum
i din DiecastItems
. Derfor fungerer følgende fint ved at tilføje sådan en kolonne:
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)
);
FIDEL