Bagaimana Anda membuat hubungan dengan kunci non-primer dalam SQL Server?

8

Saya memiliki tabel Pengguna yang memiliki dua kolom kunci utama yang disebut UserID dan kolom lain yang disebut UserName.

  • UserID (int) PK
  • UserName (varchar (256)

Keduanya unik tetapi saya memutuskan untuk alasan menggunakan UserName sebagai referensi di tabel lain. Jadi tabel pesanan misalnya memiliki referensi ke pengguna dengan UserName bukan userid.

  • Id pemesanan
  • Nama pengguna

Saya ingin membuat hubungan antara semua tabel yang mereferensikan UserName dan tabel Users sehingga saya mendapatkan fitur pembaruan / penghapusan kaskade SQL Server.

Tetapi SQL Server tidak memungkinkan saya untuk membuat hubungan pada kolom kunci utama. Apakah ada cara saya bisa mendapatkan fitur pembaruan / penghapusan kaskade tanpa mengubah tabel pengguna sehingga UserName adalah kunci utama dan bukan UserID?

Shrage Smilowitz
sumber

Jawaban:

13

Buat indeks unik atau batasan unik di UserNamekemudian Anda dapat referensi dalam denda kendala FK.

Pernyataan Anda itu

Sql Server tidak mengizinkan saya untuk membuat hubungan pada kolom kunci utama

salah. SQL Server hanya peduli bahwa kolom yang berpartisipasi dalam hubungan FK memiliki indeks unik yang ditentukan.

Martin Smith
sumber
1
Anda benar, pernyataan saya didasarkan pada pesan kesalahan yang saya dapatkan dari sql server ketika saya mencoba membuat hubungan.
Shrage Smilowitz