簡體   English   中英

主鍵和外鍵同時使用

[英]Primary and Foreign Key at the same time

在SQL Server 2008中是否可以創建一個由2列同時創建主鍵和外鍵的表? 如果是的話,這樣的代碼怎么樣? 我已經搜索過,什么都沒有。

好沒問題:

CREATE TABLE dbo.[User]
(
  Id int NOT NULL IDENTITY PRIMARY KEY,
  Name nvarchar(1024) NOT NULL
);

CREATE TABLE [Group] 
(
  Id int NOT NULL IDENTITY PRIMARY KEY,
  Name nvarchar(1024) NOT NULL
);

CREATE TABLE [UserToGroup]
(
  UserId int NOT NULL,
  GroupId int NOT NULL,
  PRIMARY KEY CLUSTERED ( UserId, GroupId ),
  FOREIGN KEY ( UserId ) REFERENCES [User] ( Id ) ON UPDATE  NO ACTION  ON DELETE  CASCADE,
  FOREIGN KEY ( GroupId ) REFERENCES [Group] ( Id ) ON UPDATE  NO ACTION  ON DELETE  CASCADE
);

這通常用於模擬多對多關系。

這些是完全不同的結構。

主鍵用於強制表內的唯一性,並且是特定記錄的唯一標識符。

外鍵用於引用完整性,以確保另一個表中存在值。

外鍵需要引用另一個表中的主鍵。

如果您想擁有一個唯一的外鍵,您可以制作一個FK約束並為該相同的字段添加唯一的索引/約束。

出於參考目的,SQL Server允許FK引用UNIQUE CONSTRAINT以及PRIMARY KEY字段。

這可能不是一個好主意,因為通常你想在表中允許重復的外鍵。 即使你現在沒有,將來也可能,最好不要這樣做。 請參閱將外鍵作為主鍵是否可以?

快速說明 - 來自Microsoft頁面( http://msdn.microsoft.com/en-us/library/ms189049.aspx )...

“外鍵約束不必僅鏈接到另一個表中的主鍵約束;它也可以定義為引用另一個表中UNIQUE約束的列。”

不經常使用,但在某些情況下有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM