繁体   English   中英

SQL Server使用外键创建表的不同方法

[英]SQL Server Different ways of creating table with foreign key

我需要用外键创建表。 到目前为止,我一直在这样做:

CREATE TABLE books 
(
   book_id NVARCHAR(15) NOT NULL UNIQUE,
   author_id INT REFERENCES authors(author_id)
   ... 
);

但是我大学的教授给我发送了示范脚本,展示了处理外键的另一种方式:

CREATE TABLE books 
(
   book_id NVARCHAR(15) NOT NULL UNIQUE,
   author_id INT,

   CONSTRAINT author_FK 
       FOREIGN KEY(author_id) REFERENCES authors(author_id)
   ...
);

为了找到两者之间的区别,我进行了研究。 不幸的是,我没有找到答案,我发现的是用外键创建表的另一种方法(非常类似于第二种方法):

CREATE TABLE books 
(
   book_id NVARCHAR(15) NOT NULL UNIQUE,
   author_id INT,
   FOREIGN KEY(author_id) REFERENCES authors(author_id)
   ... 
);

您能否指出它们之间的区别?

在功能上,两者没有区别。 第一个称为内联约束(也可以用于check约束)。

有两个小区别。 第一个是内联引用不需要constraint关键字,因此内联引用通常不命名约束(允许使用constraint ,您可以命名引用,但这不是您显示的语法)。

第二个是外键引用只能使用一列。 对我来说,这几乎不是问题,因为我几乎总是拥有合成主键而不是合成主键。 但是,内联语法不如完整约束定义强大。

顺便说一句,还有第三种使用alter table方法。 这类似于您的第二种方法,但是它允许在创建表之后添加约束。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM