簡體   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