Oracle
 sql >> база данни >  >> RDS >> Oracle

Проблем със създаването на чужд ключ в Oracle

Когато добавите 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 скоби, са от таблицата, която създавате, докато колоните междуN 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




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да добавите индикатора AD/BC към дата в Oracle

  2. Мрежовият адаптер не можа да установи връзката - Oracle 11g

  3. Съвместим ли е SYS_GUID() UUID RFC 4122 на Oracle?

  4. Как да премахнете част от низа в oracle

  5. Доставчикът не е съвместим с версията на клиента Oracle