REFERENCES语句的差异

时间:2013-11-25 04:29:38

标签: sql oracle-sqldeveloper

问题很简单。

假设已创建下表

CREATE TABLE Customer
( name varchar(20),
  address varchar (40),
  primary key (name));

我想知道写这样一个表的区别是什么

CREATE TABLE Orders
( name varchar(20),
  assembly_id numeric (9, 0),
  primary key (assembly_id),
  foreign key (name) references Customer);

并且喜欢这个

CREATE TABLE Orders
( name varchar(20),
  assembly_id numeric (9, 0),
  primary key (assembly_id),
  foreign key (name) references Customer(name));

1 个答案:

答案 0 :(得分:0)

CREATE TABLE Orders
( name varchar(20),
  assembly_id numeric (9, 0),
  primary key (assembly_id),
  foreign key (name) references Customer);

此外键默认情况下引用Customer表的主键。

但是在这段代码中

CREATE TABLE Orders
( name varchar(20),
  assembly_id numeric (9, 0),
  primary key (assembly_id),
  foreign key (name) references Customer(name));

foreing key name引用任何指定的Candidate键。此处指定名称。

所以两者都是一样的。但是在第一种情况下,由于未指定key,因此它引用主键。在第二种情况下,键是明确指定的。