Nếu bạn có hỗn hợp khóa chính, rồi đến tất cả ràng buộc khóa ngoại tham chiếu nó phải sử dụng tất cả các cột của khóa chính tổng hợp.
Vì vậy, trong trường hợp của bạn - TableTwo
phải tham chiếu TableOne(ReportID, Date)
Cách duy nhất để giải quyết vấn đề này là tạo UNIQUE INDEX
trên TableOne (ReportID)
- sau đó bạn có thể tạo một tham chiếu khóa ngoại cho riêng ràng buộc duy nhất đó.
Nhưng điều đó đặt ra câu hỏi:tại sao không phải là ReportID
một mình khóa chính, nếu nó đã là duy nhất (vì bạn có thể đặt UNIQUE INDEX
trên đó) và KHÔNG ĐỦ (vì nó là một phần của PK phức hợp)?
Bước 1:tạo UNIQUE INDEX
:
CREATE UNIQUE NONCLUSTERED INDEX UIX_TableOne ON dbo.TableOne(ReportID);
Bước 2:Tạo khóa ngoại từ TableTwo
:
ALTER TABLE dbo.TableTwo
ADD CONSTRAINT FK_TableTwo_TableOne
FOREIGN KEY(ReportID) REFERENCES dbo.TableOne(ReportID)