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

Problem med oprettelse af udenlandsk nøgle i Oracle

Når du tilføjer FK, linker du en kolonne som barn fra den tabel, du opretter, til dens forælder fra forældretabellen. Derfor skal du angive navnet på den underordnede kolonne samt det overordnede kolonnenavn.

Den generelle syntaks er

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

Bemærk, at kolonnerne mellem FOREIGN KEY parentes er fra den tabel, du opretter, mens kolonnerne mellem REFERENCES PARENT_TABLE er fra forældretabellen.

Du har ikke en kolonne kaldet CollectibleNum i din DiecastItems . Derfor fungerer følgende fint ved at tilføje sådan en kolonne:

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

FIDEL




  1. Installation af WordPress ved hjælp af WP-CLI

  2. SQL DROP DATABASE Syntaks – Listet efter DBMS

  3. PostgresSQL-installation mislykkedes:initialisering af databaseklynge mislykkedes MAC OS

  4. For at ignorere dublerede nøgler under 'copy from' i postgresql