如何添加一個sql表格的唯一約束作爲外鍵引用另一個sql表格sql server 2005添加一個sql表格的唯一約束作爲外鍵引用另一個sql表格
4
A
回答
0
您需要請記住,在列上添加FK不會自動在該列上放置索引。你需要分兩步做。
1) Make a column in your table a FK to a parent table.
2) Add a unique constraint on that same column
1
道歉,但我不確定你在問什麼。給表格定義更多的例子會有所幫助!我想認爲你說你在TableA中有一個名爲「Cons2cols」的唯一約束中有兩列,而且你還希望這兩列是TableB中兩列PK/unqiue對的FK。
那的工作原理如下,如果你從頭開始創建表:
CREATE TABLE TableB (
PK1 INT NOT NULL,
PK2 INT NOT NULL,
SomeData VARCHAR(1000),
CONSTRAINT PK_TableB PRIMARY KEY CLUSTERED (PK1, PK2)
)
CREATE TABLE TableA (
PK INT NOT NULL,
FK1 INT NOT NULL, -- Or NULL, if you''d rather.
FK2 INT NOT NULL,
CONSTRAINT PK_TableA PRIMARY KEY CLUSTERED (PK),
CONSTRAINT FK_TableA_FK1FK2 FOREIGN KEY (FK1, FK2) REFERENCES TableB (PK1, PK2),
CONSTRAINT Cons2cols UNIQUE(FK1, FK2)
)
如果表已經存在,你可以在事後對這些相同的約束添加:
ALTER TABLE TableA ADD CONSTRAINT FK_TableA_FK1FK2 FOREIGN KEY (FK1, FK2) REFERENCES TableB (PK1, PK2);
ALTER TABLE TableA ADD CONSTRAINT Cons2cols UNIQUE(FK1, FK2);
無論哪種方式,TableA現在都有一個唯一的2列FK到另一個表。
8
爲了添加FK約束(在子表中父表中)你必須添加唯一約束父表關係的列表。
其餘全是可選的或無關與FK:
- 的任何主鍵
- 沒有在子表colums
需要獨特性(一個或多個)的母公司沒有強制性的需要表(在這種FK關係中)經常被稱爲(包括通過SSMS)作爲主鍵表,但是PK不是必須的,父表中的唯一鍵/約束是足夠的(因爲PK是唯一的,它是父表中唯一約束的特殊情況)。
刪除表A和表B從answer by Matt,這是混淆對於初學者來說,
並重新創建它們作爲
CREATE TABLE parentB--TableB
(
PK1 INT NOT NULL,
PK2 INT NOT NULL,
--I would not have additional non-referenced data in parent table,
--rather in child table
--SomeData VARCHAR(1000),
--CONSTRAINT PK_TableB PRIMARY KEY CLUSTERED (PK1, PK2)
)
CREATE TABLE childA--TableA
(
--PK INT, -- NOT NULL,
FK1 INT-- NOT NULL, -- Or NULL, if you''d rather.
FK2 INT --NOT NULL --,
, SomeData VARCHAR(1000)
--CONSTRAINT PK_TableA PRIMARY KEY CLUSTERED (PK),
--CONSTRAINT FK_TableA_FK1FK2 FOREIGN KEY (FK1, FK2) REFERENCES TableB (PK1, PK2),
--CONSTRAINT Cons2cols UNIQUE(FK1, FK2)
)
現在,爲了,增加FK
ALTER TABLE childA
ADD
--constraint FK1_childA
--this is optional, if one needs to add his own custom name
FOREIGN KEY (FK1) REFERENCES parentB(PK1);
你首先應該創建獨特對父表列中相應引用列的約束:
ALTER TABLE parentB ADD
--CONSTRAINT YourUniqueName --uncomment for adding your own name to constraint
UNIQUE(PK1)
同樣爲2列外鍵約束
(首先,你需要在相應父表中唯一約束):
ALTER TABLE parentB ADD
--CONSTRAINT YourUniqueName --for adding your own name to unique constraint
UNIQUE(PK1,PK2)
ALTER TABLE childA
ADD
--constraint yourUniqueName --uncomment for adding your own name to FK constraint
FOREIGN KEY (FK1, FK2) REFERENCES parentB(PK1, PK2);
0
忘掉唯一約束現在。只需在兩列上創建新的外鍵。
ALTER TABLE dbo.PurchaseDetail
ADD FOREIGN KEY (Customer, Product)
REFERENCES dbo.Purchase (Customer, Product)
相關問題
- 1. SQL跨多個表的唯一約束
- 2. SQL約束檢查另一個表列
- 3. 添加約束至表引用的另一個表
- 4. 是否可以將唯一約束設置爲另一個表中的外鍵?
- 5. SQL,兩個外鍵引用另一個表的相同主鍵
- 6. SQL - 添加唯一約束失敗
- 7. Django表格intergrityerror:具有唯一字段的外鍵,唯一約束失敗
- 8. SQL:如何在CHECK約束中引用另一個表的值
- 9. 將約束添加到引用另一個表的列的列
- 10. SQL/PHP插入列從一個表格到另一個表格
- 11. 唯一約束外鍵列
- 12. SQL瞭解表唯一約束
- 13. 從另一個表中添加列值作爲默認約束
- 14. 如何使用另一個表中的列添加唯一約束?
- 15. 將數據從一個表格添加到另一個表格
- 16. 添加另一個表列的外鍵
- 17. MySQL爲來自多個表的列添加唯一約束?
- 18. SQL Server:唯一的約束來驗證數據不存在於另一個表
- 19. sql將表格從一個表格移動到另一個表格
- 20. 兩個外鍵引用另一個表
- 21. 不同表格的兩個主鍵作爲另一個表的外鍵
- 22. Sql加入,更新一個表格並從另一個表格生成輸出
- 23. 創建一個表,並添加外鍵約束
- 24. 複合唯一約束SQL
- 25. sql錯誤 - 唯一約束
- 26. SQL表格:如何顯示從另一個SQL表格構建的表格?
- 27. 查找表上的SQL主鍵或唯一約束?
- 28. 另一個表的列上的唯一約束
- 29. 在兩個表格的兩列上創建唯一約束
- 30. 定義表的唯一鍵約束
但我有兩個cols添加到唯一約束「Cons2cols」。我想把這個「Cons2cols」作爲外鍵映射到表 – subash 2010-11-19 13:25:53
對不起,我不太明白你在問什麼或者說什麼。 – 2010-11-19 13:45:26