Le déclencheur est supposé être annulé si l'instruction SELECT existe. La chose est, ce n'est pas le cas. Lorsque je lance uniquement le SELECT à partir du déclencheur, cela indique qu'une ligne existe. Mais quand j'essaye de SUPPRIMER avec les mêmes valeurs que j'ai dur codé dans le déclencheur, le déclencheur se déclenche mais il ne fait pas un retour en arrière. Quelqu'un a-t-il des idées sur ce qui pourrait être faux?sql Le déclencheur DELETE ne sera pas annulé
CREATE TRIGGER trg_del ON Projektbefattningar
FOR DELETE
AS
SELECT @befNr = Befattningsnr, @pNr = pNr, @EtappNr = Etappnr FROM deleted
-- Not currently using these. Using hard coded values to illustrate my problem
IF EXISTS (
SELECT *
FROM projektbefattningar
WHERE Befattningsnr = 2 AND pNr = 1 and Etappnr = 1 AND Anställningsnr is not null
)
BEGIN
RAISERROR('Could not delete, Anställningsnr is not null', 16, 1)
--THROW 50001, 'Could not delete, Anställningsnr is not null', 1;
ROLLBACK TRANSACTION;
END
GO
Pourquoi n'utilisez-vous pas un à la place du déclencheur? –
Pourquoi les exceptions de lancement avant la restauration? Essayez d'abord de revenir en arrière. –
Voir si cela aide. http://stackoverflow.com/questions/10072627/rollback-transaction-from-trigger –