Come si crea una relazione con una chiave non primaria in SQL Server?


8

Ho una tabella Users che ha due colonne una chiave primaria chiamata UserID e un'altra colonna chiamata UserName.

  • UserID (int) PK
  • Nome utente (varchar (256)

Sono entrambi unici, ma per motivi ho deciso di utilizzare UserName come riferimento in altre tabelle. Quindi la tabella degli ordini, ad esempio, ha un riferimento all'utente di UserName non userid.

  • ID ordine
  • Nome utente

Voglio creare una relazione tra tutte le tabelle che fanno riferimento al UserName e alla tabella Users in modo da ottenere la funzionalità di aggiornamento / eliminazione in cascata di SQL Server.

Ma SQL Server non mi consente di creare una relazione su una colonna chiave non primaria. È possibile ottenere la funzione di aggiornamento / eliminazione in cascata senza modificare la tabella degli utenti in modo che UserName sia la chiave primaria e non UserID?

Risposte:


13

Crea un indice univoco o un vincolo univoco, UserNamequindi puoi fare riferimento in una multa di vincolo FK.

La tua affermazione

Il server SQL non mi consente di creare una relazione su una colonna chiave non primaria

non è corretto. A SQL Server interessa solo che le colonne che partecipano alla relazione FK abbiano un indice univoco definito.


1
hai ragione, la mia affermazione si basava sul messaggio di errore che ho ricevuto dal server sql quando ho provato a creare la relazione.
Shrage Smilowitz,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.