Triggers en SQL Server 2014
/*creacion de triggers*/
--ejemplo1:
create trigger Ventas.tr_insert_paises
on Ventas.paises
for insert
as
print 'Se desencadeno el trigger tr_insert_paises'
go
--borrar trigger
drop trigger Ventas.tr_insert_paises
go
--probando trigger
insert into Ventas.paises values('010','Venezuela')
go
select * from Ventas.paises
go
--ejemplo2:
create trigger Ventas.tr_mensajes_clientes
on Ventas.clientes
for insert, update, delete
as
print 'Se disparo el mensaje del trigger clientes'
go
--store procedure
create procedure usp_add_clientes
@idclie varchar(5),
@nomclie varchar(40),
@dirclie varchar(60),
@idpais char(3),
@fonoclie varchar(25)
as
begin
begin tran
insert into Ventas.clientes values(@idclie,@nomclie,@dirclie,@idpais,@fonoclie)
if(@@ERROR=0)
begin
commit tran
end
else
begin
rollback tran
end
end
--ejecutar store procedure:
exec usp_add_clientes '00002','Jose Maria Torres Rios','Jr. Azangaro #546','010','1234567'
go
--ejemplo3: trigger y tablas auditoria
create table aud_clientes(
idcliente int identity(1,1)primary key,
codcliente varchar(5),
Nombre varchar(60),
fecha_autoria date)
go
--trigger
create trigger Ventas.Tr_aud_clientes
on Ventas.clientes
for insert
as
begin
insert into aud_clientes(codcliente,Nombre,fecha_autoria)
select IdCliente, NomCliente, getdate() from inserted
end
--verificando
select * from Ventas.clientes where IdCliente='00002'
select * from aud_clientes
GO
--ejemplo4: Trigger y tabla auditoria
create table Compras.aud_categorias(
codauditoria int identity(1,1)primary key,
codcategoria int,
nombre varchar(15),
servidor varchar(15),
fecha date,
hora time)
go
--trigger
create trigger Compras.tr_borrar_categorias
on Compras.categorias
for delete
as
begin
insert into aud_categorias(codcategoria, nombre, servidor, fecha, hora)
select IdCategoria, NombreCategoria, @@SERVERNAME, getdate(), getdate() from deleted
end
--probando trigger
delete from Compras.categorias where IdCategoria=9
select * from Compras.categorias
select * from Compras.aud_categorias
go
--ejemplo5: trigger con operaciones
create trigger Compras.tr_insertar_productos
on Compras.productos
for insert
as
begin
if (select count (*) from inserted, compras.productos
where inserted.nomproducto = productos.nomproducto) > 1
begin
rollback transaction
print 'El nombre del producto ya existe!'
end
else
begin
commit transaction
print 'El producto se registro satisfactoriamente!'
end
end
--ejemplo1:
create trigger Ventas.tr_insert_paises
on Ventas.paises
for insert
as
print 'Se desencadeno el trigger tr_insert_paises'
go
--borrar trigger
drop trigger Ventas.tr_insert_paises
go
--probando trigger
insert into Ventas.paises values('010','Venezuela')
go
select * from Ventas.paises
go
--ejemplo2:
create trigger Ventas.tr_mensajes_clientes
on Ventas.clientes
for insert, update, delete
as
print 'Se disparo el mensaje del trigger clientes'
go
--store procedure
create procedure usp_add_clientes
@idclie varchar(5),
@nomclie varchar(40),
@dirclie varchar(60),
@idpais char(3),
@fonoclie varchar(25)
as
begin
begin tran
insert into Ventas.clientes values(@idclie,@nomclie,@dirclie,@idpais,@fonoclie)
if(@@ERROR=0)
begin
commit tran
end
else
begin
rollback tran
end
end
--ejecutar store procedure:
exec usp_add_clientes '00002','Jose Maria Torres Rios','Jr. Azangaro #546','010','1234567'
go
--ejemplo3: trigger y tablas auditoria
create table aud_clientes(
idcliente int identity(1,1)primary key,
codcliente varchar(5),
Nombre varchar(60),
fecha_autoria date)
go
--trigger
create trigger Ventas.Tr_aud_clientes
on Ventas.clientes
for insert
as
begin
insert into aud_clientes(codcliente,Nombre,fecha_autoria)
select IdCliente, NomCliente, getdate() from inserted
end
--verificando
select * from Ventas.clientes where IdCliente='00002'
select * from aud_clientes
GO
--ejemplo4: Trigger y tabla auditoria
create table Compras.aud_categorias(
codauditoria int identity(1,1)primary key,
codcategoria int,
nombre varchar(15),
servidor varchar(15),
fecha date,
hora time)
go
--trigger
create trigger Compras.tr_borrar_categorias
on Compras.categorias
for delete
as
begin
insert into aud_categorias(codcategoria, nombre, servidor, fecha, hora)
select IdCategoria, NombreCategoria, @@SERVERNAME, getdate(), getdate() from deleted
end
--probando trigger
delete from Compras.categorias where IdCategoria=9
select * from Compras.categorias
select * from Compras.aud_categorias
go
--ejemplo5: trigger con operaciones
create trigger Compras.tr_insertar_productos
on Compras.productos
for insert
as
begin
if (select count (*) from inserted, compras.productos
where inserted.nomproducto = productos.nomproducto) > 1
begin
rollback transaction
print 'El nombre del producto ya existe!'
end
else
begin
commit transaction
print 'El producto se registro satisfactoriamente!'
end
end
Comentarios