Làm thế nào để bạn tạo mối quan hệ với khóa không chính trong SQL Server?


8

Tôi có một bảng Người dùng có hai cột một khóa chính gọi là UserID và một cột khác gọi là Tên người dùng.

  • ID người dùng (int) PK
  • Tên người dùng (varchar (256)

Cả hai đều là duy nhất nhưng tôi đã quyết định vì lý do sử dụng Tên người dùng làm tài liệu tham khảo trong các bảng khác. Vì vậy, bảng thứ tự ví dụ có một tham chiếu đến người dùng bởi UserName không phải userid.

  • Đặt hàng
  • Tên tài khoản

Tôi muốn tạo mối quan hệ giữa tất cả các bảng tham chiếu đến Tên người dùng và bảng Người dùng để tôi có được tính năng cập nhật / xóa tầng của SQL Server.

Nhưng SQL Server không cho phép tôi tạo mối quan hệ trên cột không chính. Có cách nào để tôi có thể nhận được tính năng cập nhật / xóa tầng mà không thay đổi bảng người dùng để Tên người dùng là khóa chính và không phải là ID người dùng không?

Câu trả lời:


13

Tạo một chỉ mục duy nhất hoặc ràng buộc duy nhất trên UserNameđó sau đó bạn có thể tham chiếu nó trong một ràng buộc FK.

Tuyên bố của bạn rằng

Sql Server không cho phép tôi tạo mối quan hệ trên cột không phải là khóa chính

không chính xác SQL Server chỉ quan tâm rằng (các) cột tham gia vào mối quan hệ FK có một chỉ mục duy nhất được xác định.


1
bạn đã đúng, tuyên bố của tôi dựa trên thông báo lỗi tôi nhận được từ máy chủ sql khi tôi cố gắng tạo mối quan hệ.
Shrage Smilowitz
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.