Cascade su una singola tabella

martedì 16 gennaio 2007 - 16.54

melmar20 Profilo | Junior Member

Ciao a tutti vorrei fare il CASCADE su una singola tabella , sto utilizzando Microsoft SQL Server ma non me lo permette....

Ricapitolando io ho una colonna della mia tabella che fà riferimento alla chiave primaria della stessa tabella e vorrei che cancellando una tupla a cui fanno riferimento delle altre,queste vengano cancellate automaticamente...

Che posso fare?

alx_81 Profilo | Guru

>Ciao a tutti
Ciao!
ti capito sempre io eh?

>vorrei fare il CASCADE su una singola tabella ,
>sto utilizzando Microsoft SQL Server ma non me lo permette....
dipende come vuoi ottenerla
>
>Ricapitolando io ho una colonna della mia tabella che fà riferimento
>alla chiave primaria della stessa tabella e vorrei che cancellando
>una tupla a cui fanno riferimento delle altre,queste vengano
>cancellate automaticamente...
dovresti progettare nel tuo database particolari relazioni e quindi creare foreign key indicando a sql server di cancellare a cascata tutte le tabelle figlie.
Il tutto dovrebbe essere fatto in fase di design del tuo database..

Alx81 =)

http://blogs.dotnethell.it/suxstellino

melmar20 Profilo | Junior Member

purtroppo non è proprio possibile utilizzare il CASCADE su una singola tabella....
in questo Thread:http: //www.dotnethell.it/forum/messages.aspx?ThreadID=13062 mi hanno consigliato di utilizzare un trigger,ma con quello che mi è stato suggerito io non riesco a cancellare i figli dei figli della mia tabella....
Avrei bisogno di una procedura di DRop che quando vado a cancellare un record mi vada a cancellare gli altri record che a questo fanno riferimento e ancora gli altri che fanno riferimento a quest'ultimi e così andando....

spero di essere stato chiaro

alx_81 Profilo | Guru

>purtroppo non è proprio possibile utilizzare il CASCADE su una
>singola tabella....
>in questo Thread:http: //www.dotnethell.it/forum/messages.aspx?ThreadID=13062
>mi hanno consigliato di utilizzare un trigger,ma con quello che
>mi è stato suggerito io non riesco a cancellare i figli dei figli
>della mia tabella....
>Avrei bisogno di una procedura di DRop che quando vado a cancellare
>un record mi vada a cancellare gli altri record che a questo
>fanno riferimento e ancora gli altri che fanno riferimento a
>quest'ultimi e così andando....
>
>spero di essere stato chiaro
confermo.. non è possibile fare il cascade sulla stessa tabella.
credevo volessi farla su più tabelle. Non avevo letto con attenzione.

Alx81 =)

http://blogs.dotnethell.it/suxstellino

lbenaglia Profilo | Guru

>in questo Thread:http: //www.dotnethell.it/forum/messages.aspx?ThreadID=13062
>mi hanno consigliato di utilizzare un trigger,ma con quello che
>mi è stato suggerito io non riesco a cancellare i figli dei figli
>della mia tabella....
Si, verissimo, la soluzione basata sui trigger che ho postato non è ricorsiva.
Nel medesimo thread ho comunque proposto una soluzione per SQL Server 2005 che utilizza una CTE ricorsiva per eseguire la cancellazione.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5