>Riporto il codice del trigger qui di seguito:
>-------------------------------
>CREATE TRIGGER articolidelete ON dbo.ARTICOLI
>FOR DELETE
>AS
>DECLARE @vcodice CHAR(20)
>SELECT @vcodice = codice FROM deleted
>INSERT INTO RecordsCancellati (codice) VALUES (@vcodice)
>-------------------------------
>
>La tabella Articoli è relazionata con altre tabelle.
>Il software applicativo (del quale non possiedo i sorgenti ma
>solo l'eseguibile), in corrispondenza alla richiesta di cancellazione,
>fa partire sicuramente una transazione per la cancellazione dei
>records relazionati e del record stesso ma poi si pianta visualizzando
>il seguente errore:
>
>"No user transaction is currently in progress.
>Alla richiesta ROLLBACK TRANSACTION non è associata un'istruzione
>BEGIN TRANSACTION corrispondente."
>
>Ovviamente se elimino il trigger tutto funziona perfettamente.
Ciao Giovanni,
Non capisco come quel trigger possa generare l'errore riportato.
Ad ogni modo ti propongo una versione che contempli la cancellazione di più righe in un'unica transazione:
CREATE TRIGGER dbo.trD_Articoli
ON dbo.ARTICOLI
FOR DELETE
AS
INSERT dbo.RecordsCancellati(Codice)
SELECT Codice
FROM DELETED;
Se anche questo trigger scatena l'eccezione, ti suggerisco di eseguire una sessione di Profiler per capire che cosa fa l'applicazione quando elimini un articolo.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org