german msdn documentation july 2006 - link:
ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.de/tsqlref9/html/6882c5bc-ff74-476a-984b-164aeb036c66.htm
QUOTE
Beim Ausgeben von ROLLBACK TRANSACTION in einem Trigger erfolgt Folgendes:
Der Trigger setzt die Ausführung aller verbleibenden Anweisungen nach der ROLLBACK-Anweisung fort. Wenn durch eine dieser Anweisungen Daten geändert werden, wird für die Änderungen kein Rollback ausgeführt. Es werden keine geschachtelten Trigger durch die Ausführung der verbleibenden Anweisungen ausgelöst.
Der Trigger setzt die Ausführung aller verbleibenden Anweisungen nach der ROLLBACK-Anweisung fort. Wenn durch eine dieser Anweisungen Daten geändert werden, wird für die Änderungen kein Rollback ausgeführt. Es werden keine geschachtelten Trigger durch die Ausführung der verbleibenden Anweisungen ausgelöst.
which means that nested triggers will not be executed after a rollback command within the trigger.
when trying the following example:
CODE
alter trigger tins on a after insert as
raiserror('tins!', 16, 1)
rollback transaction
update a set x = 0
go
alter trigger tupd on a after update as
raiserror('tupd!', 16, 1)
go
insert into a values(3,4)
raiserror('tins!', 16, 1)
rollback transaction
update a set x = 0
go
alter trigger tupd on a after update as
raiserror('tupd!', 16, 1)
go
insert into a values(3,4)
the output is the following:
CODE
Meldung 50000, Ebene 16, Status 1, Prozedur tins, Zeile 2
tins!
Meldung 50000, Ebene 16, Status 1, Prozedur tupd, Zeile 2
tupd!
tins!
Meldung 50000, Ebene 16, Status 1, Prozedur tupd, Zeile 2
tupd!
which isnt really what we expected.
Bug ? or Documenation Bug ?