sql >> Databáze >  >> RDS >> Oracle

Problém s vytvořením cizího klíče v Oracle

Když přidáte FK, propojíte sloupec jako dítě z tabulky, kterou vytváříte, k jejímu nadřazenému z rodičovské tabulky. Proto musíte zadat název podřízeného sloupce a také název nadřazeného sloupce.

Obecná syntaxe je

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

Všimněte si, že sloupce mezi FOREIGN KEY závorky jsou z tabulky, kterou vytváříte, zatímco sloupce mezi N REFERENCES PARENT_TABLE jsou z nadřazené tabulky.

Nemáte sloupec s názvem CollectibleNum v DiecastItems . Přidání takového sloupce tedy funguje dobře:

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

HUDBY




  1. Jak uložit výsledek dotazu MySQL do souboru .CSV

  2. Jak mám uložit GUID v tabulkách MySQL?

  3. Jak zobrazit serverové řazení v SQL Server (T-SQL)

  4. Jak extrahovat pouze hodnotu data z pole data v Oracle?