Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Problema de criação de chave estrangeira no Oracle


Ao adicionar FK, você está vinculando uma coluna como filha da tabela que você está criando, para seu pai da tabela pai. Portanto, você precisa fornecer o nome da coluna filha, bem como o nome da coluna pai.

A sintaxe geral é
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 as colunas entre FOREIGN KEY colchetes, são da tabela que você está criando, enquanto as colunas entreN REFERENCES PARENT_TABLE são da tabela pai.

Você não tem uma coluna chamada CollectibleNum em seus DiecastItems . Portanto, o seguinte funciona bem adicionando essa coluna:
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) 
  ); 

VIOLINO