Проблема с внешним ключом в Oracle

Когда я пытаюсь создать эти две таблицы, я получаю:

"Ошибка SQL: ORA-00904:" COLLECTIBLENUM ": недопустимый идентификатор"

Я уверен, что это ошибка noob, но я просто этого не вижу. Может ли кто-нибудь указать, что я делаю неправильно? Заранее спасибо.

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), CONSTRAINT diecastItem_pk PRIMARY KEY(DiecastName, DiecastCopy), CONSTRAINT diecastItem_Collectible_fk FOREIGN KEY(CollectibleNum) REFERENCES Collectibles(CollectibleNum)); 

Когда вы добавляете FK, вы связываете столбец как дочерний элемент из создаваемой таблицы, его родительский элемент из родительской таблицы. Следовательно, вам необходимо указать имя дочернего столбца, а также имя родительского столбца.

Общий синтаксис

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

Обратите внимание, что столбцы между скобками FOREIGN KEY находятся из создаваемой таблицы, а столбцы betweeN REFERENCES PARENT_TABLE – из родительской таблицы.

У вас нет столбца CollectibleNum в DiecastItems . Следовательно, следующее работает отлично, добавляя такой столбец:

 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