create table dbo.testXa( a integer)gocreate trigger [dbo].[ti_test] on [dbo].[testXa] after insertas raiserror 19999 'Sorry, not insertable'goselect * from testxa--emtpy tableinsert into testxa values (123)--we got an errorselect * from testxa--insert took place anywaybegin tryinsert into testxa values (124)end trybegin catchSELECT 'Error in Trigger' AS error, Error_Message() AS MESSAGEend catchgoselect * from testxa--no insert took placedrop table dbo.testXa
CREATE PROCEDURE dbo.testAS--select 'test'RAISERROR 19999 'test';GODECLARE @retval INTEXEC @retval = dbo.testSELECT @retvalDROP PROCEDURE dbo.test
CREATE TABLE dbo.testXa ( a integer )CREATE TABLE dbo.TestXb ( b tinyint )GOCREATE TRIGGER [dbo].[ti_test] ON [dbo].[testXa] after INSERTAS INSERT INTO dbo.TestXb SELECT * FROM inserted GOSELECT * FROM testxa--emtpy tableINSERT INTO testxa VALUES ( 1234 )--we got an error, not raised an error so no insertSELECT * FROM testxaSELECT * FROM testxbGOBEGIN try INSERT INTO testxa VALUES ( 12345 )END tryBEGIN catch SELECT 'Error in Trigger' AS error, Error_Message() AS MESSAGEEND catchGO--no insert took placeSELECT * FROM testxaDROP TABLE dbo.testXaDROP TABLE dbo.testXb
CREATE TRIGGER [dbo].[ti_test] ON [dbo].[testXa] after INSERTAS BEGIN try --will not work due to overflow INSERT INTO dbo.TestXB SELECT * FROM inserted END Try BEGIN Catch DECLARE @error VARCHAR(500) SET @error = Error_Message() SELECT @error END Catch