Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Không có khóa chính hoặc khóa ứng viên nào trong bảng được tham chiếu khớp với danh sách cột tham chiếu trong khóa ngoại

Khóa ngoại hoạt động bằng cách nối một cột với một khóa duy nhất trong một bảng khác và khóa duy nhất đó phải được xác định dưới dạng một số dạng chỉ mục duy nhất, có thể là khóa chính hoặc một số chỉ mục duy nhất khác.

Hiện tại, chỉ mục duy nhất duy nhất mà bạn có là chỉ mục kết hợp trên ISBN, Title khóa chính của bạn là gì.

Có một số tùy chọn mở cho bạn, tùy thuộc vào chính xác những gì BookTitle nắm giữ và mối quan hệ của dữ liệu trong đó.

Tôi sẽ mạo hiểm đoán rằng ISBN là duy nhất cho mỗi hàng trong BookTitle. BẬT với giả định là trường hợp này, sau đó thay đổi khóa chính của bạn thành chỉ trên ISBN và thay đổi BookCopy để thay vì Tên sách, bạn có ISBN và tham gia trên đó.

Nếu bạn cần giữ khóa chính của mình dưới dạng ISBN, Title thì bạn cần phải lưu trữ ISBN trong BookCopy cũng như Title và khóa ngoại trên cả hai cột, HOẶC bạn cần tạo một chỉ mục duy nhất trên BookTitle (Title) dưới dạng một chỉ mục riêng biệt.

Nói chung hơn, bạn cần đảm bảo rằng cột hoặc các cột bạn có trong REFERENCES mệnh đề khớp chính xác với một chỉ mục duy nhất trong bảng mẹ:trong trường hợp của bạn, nó không thành công vì bạn không có một chỉ mục duy nhất trên Title một mình.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tạo bảng từ kết quả truy vấn chọn trong SQL Server 2008

  2. Sự cố bảng tạm thời RODBC khi kết nối với MS SQL Server

  3. sp_add_schedule so với sp_add_jobschedule trong SQL Server:Sự khác biệt là gì?

  4. PHP, ORM, MSSQL và Unicode, có thể làm cho chúng hoạt động cùng nhau không?

  5. Visual Studio:ContextSwitchDeadlock