星期三, 6月 19, 2019

[SQL] 建立 Foreign Key

同事詢問為什麼 FK 建不起來,了解情況後發現,因為程式需求,要把原 master-detail 架構下的 master PK 換成其他欄位,但希望還是可以維持原有的 FK 存在,一開始直覺是 FK 就建不起來,後來查資料發現,原來除了 PK 外,有 Unique 也可以

doc 上重點摘要
外部索引鍵條件約束不一定只能連結到另一個資料表中的主索引鍵條件約束;它也可以定義成參考另一個資料表中 UNIQUE 條件約束的資料行。
透過 SSMS 來建立 FK,其實訊息也說得很清楚,需要 PK 或 Unique

[SQL] 建立 Foreign Key

簡易練習一下
USE tempdb
GO

-- 建立 tbMaster、tbDetail Table
CREATE TABLE tbMaster (MID int unique) -- 設定 MID 欄位為 Unique
CREATE TABLE tbDetail (DID int Primary key not null, MID int)
GO

-- 設定 FK
ALTER TABLE [tbDetail]  WITH CHECK ADD CONSTRAINT [FK_tbDetail_tbMaster] FOREIGN KEY(MID)
REFERENCES [tbMaster] (MID)
GO

[SQL] 建立 Foreign Key-3

[SQL] 建立 Foreign Key-2

沒有留言:

張貼留言