Detener un trigger

16/05/2005 - 17:01 por Carlos Rodriguez | Informe spam
Si yo tengo un trigger con varias instrucciones y en una de ellas ocurre un
error. La ejecucion del resto se interrumpe ? o debo interrumpirlo
explicitamente ?

gracias
 

Leer las respuestas

#1 Alejandro Mesa
16/05/2005 - 17:22 | Informe spam
Carlos,

Que tipo de error?

Si es un error debido al esquema de la bd entonces el trigger hace un
rollback automatico. Si el error es un error logico o de chequeo de las
reglas del negocio, entonces debes hacer un rollback de la trasaccion
explicitamente.

Ejemplo:

use northwind
go

create table t1 (
c1 int not null identity(1, 1) primary key
)
go

create table t2 (
c1 int not null
)
go

create trigger tr_t1_ins on t1
for insert
as
insert into t2(c1)
select null from inserted
go

insert into t1 default values
go

select * from t1
go

alter trigger tr_t1_ins on t1
for insert
as
if exists(select * from inserted where c1 % 5 = 0)
begin
raiserror('no acepto enteros multiplos de 5.', 16, 1)
rollback transaction
end
go

truncate table t1
go

insert into t1 default values
insert into t1 default values
insert into t1 default values
insert into t1 default values
go

select * from t1
go

insert into t1 default values
go

select * from t1
go

drop table t1, t2
go


AMB


"Carlos Rodriguez" wrote:

Si yo tengo un trigger con varias instrucciones y en una de ellas ocurre un
error. La ejecucion del resto se interrumpe ? o debo interrumpirlo
explicitamente ?

gracias



Preguntas similares