Câu hỏi này là khá tương tự như nhiều để this one, nhưng đối với SQL Server 2005:chìa khóa ngoại tham khảo 2 cột khóa chính trong SQL Server
Tôi có 2 bảng trong cơ sở dữ liệu của tôi:
--'#' denotes the primary key
[Libraries]
#ID #Application Name
1 MyApp Title 1
2 MyApp Title 2
[Content]
#ID Application LibraryID Content
10 MyApp 1 xxx
11 MyApp 1 yyy
(các cơ sở dữ liệu rõ ràng phức tạp hơn nhiều và có khóa kép này có ý nghĩa)
Mỗi thư viện được xác định bằng ID và Tên ứng dụng duy nhất của nó. Tôi đang cố gắng đảm bảo rằng mỗi nội dung đều tham chiếu đúng một thư viện hiện có.
Khi tạo các hạn chế (sử dụng Wizard) như
Primary key table Foreign key table
[Libraries] [Content]
ID ---> LibraryID
Application ---> Application
Tôi có lỗi sau:
The columns in table 'Libraries' do not match an existing primary key or UNIQUE constraint
Bạn có bất cứ ý tưởng về những gì đang xảy ra vậy? và nếu nó có thể ở tất cả bằng cách sử dụng SQL Server? (Tôi hoàn toàn không thể sửa đổi bảng [Thư viện])
Cảm ơn rất nhiều sự giúp đỡ của bạn!
Tôi đã sử dụng giao diện người dùng trực tiếp tại thời điểm đó, nhưng việc sử dụng cú pháp của bạn sẽ làm tăng lỗi sau: "Không có khóa chính hoặc khóa ứng viên trong bảng tham chiếu 'dbo.Libraries' khớp với danh sách cột tham chiếu trong khóa ngoại. .. – Luk
Vâng, trong trường hợp đó, cặp (Id, ứng dụng) là ** không ** khóa chính trên bảng Libraries.Bạn chỉ có thể tham chiếu khóa chính trên bảng cha - hoặc cột (hoặc tập hợp các cột) Đó là một phần của một chỉ mục duy nhất Kiểm tra bảng 'Thư viện' của bạn! –
Đó cũng là suy nghĩ đầu tiên của tôi, nhưng tập lệnh SQL chỉ định ' TẠO BẢNG [Thư viện] ('...' CONSTRAINT [PK_sf_Libraries] PRIMARY KEY CLUSTERED ([Ứng dụng] ASC, [ID] ASC) VỚI (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = TẮT, IGNORE_DUP_KEY = TẮT, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] '... (xin lỗi vì dum ping tất cả các SQL ở đây) – Luk