Trả lời

61

Vì Bảng 2 có khóa chính kết hợp (FileID, FileType), thì bất kỳ tham chiếu nào đến nó cũng phải bao gồm cả hai cột.

ALTER TABLE dbo.Table1 
    ADD CONSTRAINT FK_Table1_Table2 
    FOREIGN KEY(FileID, FileType) REFERENCES Table2(FileID, FileType) 

Trừ khi bạn có một hạn chế duy nhất/index trên các lĩnh vực Table2.FileID (nhưng nếu như vậy: tại sao không phải là này PK ??), bạn có thể không tạo ra một mối quan hệ FK để chỉ các bộ phận của PK trên mục tiêu bảng - không thể làm được.

+1

Chuẩn SQL này hay chỉ dành cho máy chủ MS SQL? – Jus12

+2

@ Jus12: đó là tiêu chuẩn SQL –

+0

Nhưng Table1 không có một cột "FileType", bạn có nghĩa là anh ta nên thêm một cột vào Table1 chỉ với mục đích tạo ra ràng buộc? – BornToCode

3

marc đã đưa ra câu trả lời khá hay. Nếu các hàng trong Table1 chỉ bao giờ liên quan đến một loại tập tin (ví dụ Kiểu Tệp 'ABC'), sau đó bạn có thể thêm Kiểu Tệp để Table1 như một cột tính:

ALTER TABLE Table1 ADD FileType as 'ABC' 

nào thì bạn có thể sử dụng trong chính nước ngoài.

Các vấn đề liên quan