sql >> Base de Datos >  >> RDS >> Oracle

Problema de creación de clave externa en Oracle

Cuando agrega FK, está vinculando una columna como un elemento secundario desde la tabla que está creando, a su principal de la tabla principal. Por lo tanto, debe proporcionar el nombre de la columna secundaria, así como el nombre de la columna principal.

La sintaxis general es

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

Observe que las columnas entre FOREIGN KEY corchetes, son de la tabla que está creando, mientras que las columnas entre REFERENCES PARENT_TABLE son de la tabla principal.

No tiene una columna llamada CollectibleNum en sus DiecastItems . Por lo tanto, lo siguiente funciona bien al agregar una columna de este tipo:

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

VIOLÍN