Stored procedure

venerdì 14 gennaio 2005 - 13.05

mon78 Profilo | Junior Member

Ciao a tutti devo creare una transazione che contiene tre stored procedure in sql di eliminazione da tre tabelle di un database. Le tre tabelle sono SCHEDA, SEZIONE, CAMPO, e sono così relazionate: ogni tupla di SEZIONE ha come chiave esterna IDScheda che indica la scheda a cui appartiene la sezione; ogni tupla di CAMPO ha come chiave esterna IDSezione che indica la sezione a cui appartiene il campo. Il problema è questo: se si elimina una scheda, bisogna prima eliminare tutte le sezioni che vi fanno parte, e per ogni sezione tutti i campi che vi fanno parte. Se io conosco l'id della scheda da eliminare io scrivo

delete from SCHEDA where IDScheda='5'

poi per eliminare le sezioni che vi fanno parte scrivo

delete from SEZIONE where IDScheda='5'

e metto le due istruzioni tra

begin transaction
e
commit transaction

e tutto va bene.
Ma come faccio, man mano(già penso ad un ciclo) che elimini una sezione, a prelevare l'id di quella sezione(idsezioneeliminato), che poi mi serve per fare
delete from CAMPO where IDSezione=idsezioneeliminato
????
Mi potete aiutare?Nn so come andare avanti. Grazie mille

Brainkiller Profilo | Guru

Puoi creare dei trigger di Delete.
Quando cancelli viene creata una vista virtuale chiamata deleted (o updated o inserted) dove puoi accedere ai record eliminati e leggere le informazioni.

Quindi puoi fare select * from deleted
e poi ti leggi i valori.

Oppure più semplicemente se hai creato bene il database e creato le relazioni puoi creare delle DELETE a Cascade in modo che quando cancelli il record padre i figli sono automaticamente cancellati.

ciao
david

mon78 Profilo | Junior Member

Ciao prima di tutto grazie; cmq sul database nn ti posso assicurare nulla poichè nn l'ho creato io, quindi prendo in considerazione la prima via; ma siccome nn sono esperta di sql, nn so come creare dei trigger di Delete. Mi potresti spiegare? Inoltre come faccio ad accedere alla vista virtuale chiamata deleted (o updated o inserted) ? Ti ringrazio tanto.

mon78 Profilo | Junior Member

Ciao prima di tutto grazie; cmq sul database nn ti posso assicurare nulla poichè nn l'ho creato io, quindi prendo in considerazione la prima via; ma siccome nn sono esperta di sql, nn so come creare dei trigger di Delete. Mi potresti spiegare? Inoltre come faccio ad accedere alla vista virtuale chiamata deleted (o updated o inserted) ? Ti ringrazio tanto.

Brainkiller Profilo | Guru

select * from deleted
select * from inserted
select * from updated

Ma solo all'interno chiaramente di un Trigger di Delete, Insert o Update.

Nella documentazione di SQL Server trovi tutto.

ciao
david
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