4 messaggi dal 26 ottobre 2006
Salve a tutti,
ho un problema nel creare una relazione (1 a 1) fra due tabelle le cui chiave primarie sono definite con Identity cioè usano l'autoincremento e con la proprietà di Inserimento e Cancellazione "Sovrapponi".
MSSQL mi da l'errore:
Cascading foreign key 'FK_Audio_BaseInfoCD' cannot be created where the referencing column 'Audio.IdAudio' is an identity column.

Ho letto che in questo caso la soluzione è togliere l'identità e quindi incrementare manualmente le PK e usare un trigger per effettuare le cancellazioni dei Record interessati.

La mia domanda é perché non si possono creare le relazioni con le identity column? Ed é corretta la soluzione di cui sopra o c'è ne qualcuna migliore?
Grazie per l'attenzione.
1.976 messaggi dal 27 luglio 2005
Contributi
Salve Paolo,
qui, https://www.brentozar.com/archive/2018/11/adventures-in-foreign-keys-difficulties-difficulties-difficulties/, ne vengono spiegati vari di problemi nella creazione di FK...

relativamente alla seconda parte della domanda,
>... é corretta la soluzione di cui sopra o c'è ne qualcuna migliore?

i trigger sicuramente vanno piu' che bene, sempre stando attenti a come si scrivono... ricorda sempre che possono scattare non solo a livello di riga ma anche a livello di set di righe...
al di la' di cio', visto che per mia natura NON effettuo mai operazioni di aggiornamento al di fuori di stored procedures, il problema solitamente lo risolvo direttamente nel codice delle procedure, anche se in effetti avere anche protezione di integrita' tramite la codifica di trigger sarebbe una buona cosa...
quindi, scrivi trigger ma esegui le operazioni all'interno di stored procedures che gesticano l'operazione :D:D
salutoni
Modificato da Andrea Montanari il 02 agosto 2019 22:31 -

Andrea Montanari
http://www.hotelsole.com - http://www.hotelsole.com/asql/index.php
4 messaggi dal 26 ottobre 2006
Grazie Andrea per la tua chiarezza.
Paolo

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.