Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Problem bei der Fremdschlüsselerstellung in Oracle

Wenn Sie FK hinzufügen, verknüpfen Sie eine Spalte als Kind von der Tabelle, die Sie erstellen, zu ihrem übergeordneten aus der übergeordneten Tabelle. Daher müssen Sie sowohl den Namen der untergeordneten Spalte als auch den Namen der übergeordneten Spalte angeben.

Die allgemeine Syntax ist

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

Beachten Sie, dass die Spalten zwischen FOREIGN KEY Klammern stammen aus der Tabelle, die Sie erstellen, während die Spalten zwischen REFERENCES PARENT_TABLE stammen aus der übergeordneten Tabelle.

Sie haben keine Spalte namens CollectibleNum in IhrenDiecastItems . Daher funktioniert Folgendes gut, wenn eine solche Spalte hinzugefügt wird:

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

GEIGE