Oracle
 sql >> Base de données >  >> RDS >> Oracle

Problème de création de clé étrangère dans Oracle

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