[英]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.