Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Oracle中的外键创建问题_Sql_Oracle_Foreign Keys - Fatal编程技术网

Sql Oracle中的外键创建问题

Sql Oracle中的外键创建问题,sql,oracle,foreign-keys,Sql,Oracle,Foreign Keys,当我尝试创建这两个表时,我得到: SQL错误:ORA-00904:“COLLECTIBLENUM”:标识符无效 我肯定这是一个noob错误,但我只是没有看到它。有人能指出我做错了什么吗?提前谢谢 CREATE TABLE Collectibles( CollectibleNum Number(10) NOT NULL, CONSTRAINT collectibles_pk PRIMARY KEY(CollectibleNum));

当我尝试创建这两个表时,我得到:

SQL错误:ORA-00904:“COLLECTIBLENUM”:标识符无效

我肯定这是一个noob错误,但我只是没有看到它。有人能指出我做错了什么吗?提前谢谢

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),  
  CONSTRAINT diecastItem_pk PRIMARY KEY(DiecastName, DiecastCopy),  
  CONSTRAINT diecastItem_Collectible_fk FOREIGN KEY(CollectibleNum) REFERENCES Collectibles(CollectibleNum));

添加FK时,将列作为子列从要创建的表链接到父表的父列。因此,您需要提供子列名以及父列名

一般语法是

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)
);
请注意,
外键
括号之间的列来自您正在创建的表,而
引用父表
之间的列来自父表

您的
DiecastItems
中没有名为
CollectibleNum
的列。因此,通过添加这样一个列,以下内容可以正常工作:

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