Oracle
 sql >> Database >  >> RDS >> Oracle

Problema di creazione di chiavi esterne in Oracle

Quando aggiungi FK, stai collegando una colonna da bambino dalla tabella che stai creando, al suo genitore dalla tabella padre. Pertanto, è necessario fornire il nome della colonna figlio, nonché il nome della colonna padre.

La sintassi generale è

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

Si noti che le colonne tra FOREIGN KEY parentesi, sono dalla tabella che stai creando, mentre le colonne tra REFERENCES PARENT_TABLE provengono dalla tabella padre.

Non hai una colonna chiamata CollectibleNum nel tuoDiecastItems . Quindi, quanto segue funziona bene aggiungendo una tale colonna:

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

VIOLETTO