Lorsque vous ajoutez FK, vous liez une colonne en tant qu'enfant de la table que vous créez, à son parent de la table mère. Par conséquent, vous devez fournir le nom de la colonne enfant, ainsi que le nom de la colonne parent.
La syntaxe générale est
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)
);
Notez que les colonnes entre FOREIGN KEY
crochets, proviennent de la table que vous créez, tandis que les colonnes entre REFERENCES PARENT_TABLE
proviennent de la table parent.
Vous n'avez pas de colonne appelée CollectibleNum
dans vos DiecastItems
. Par conséquent, ce qui suit fonctionne bien en ajoutant une telle colonne :
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)
);
VIOLETTE