Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Comprensione delle regole di aggiornamento ed eliminazione per le relazioni in SSMS 2008

La chiave esterna definisce una relazione padre-figlio tra due tabelle. La chiave primaria nella tabella padre è la chiave esterna in un massimo di n righe della tabella figlio.

Ora, se quella chiave primaria nella tabella padre ottiene UPDATE, la REGOLA UPDATE entra in gioco. Anche tutte le righe figlie vengono aggiornate, impostate su NULL o altro. La migliore pratica, tuttavia, è quella di avere una chiave primaria che non cambia MAI (un ID fisso o qualcosa del genere), quindi questa è la regola meno importante.

La più importante è la regola DELETE:cosa succede se la riga principale viene eliminata (ad es. L'ordine viene eliminato)? Puoi anche eliminare tutte le righe secondarie (tutti gli elementi pubblicitari dell'ordine) con CASCADE DELETE, oppure puoi impostare la loro chiave esterna su NULL (non hanno più un genitore), dipende totalmente dal tuo scenario concreto.

Nello scenario Ordine/righe d'ordine, potrebbe essere del tutto utile eliminare le righe d'ordine quando l'ordine completo viene eliminato, ma probabilmente non si desidera eliminare un prodotto, solo perché un ordine che fa riferimento ad esso è stato eliminato - non c'è un'unica risposta CORRETTA:dipende dal tuo scenario e dalla tua app.

Marco