CREANDO TRIGGER EN TRANSAC SQL
trigger (o disparador) en una Base de datos , es un procedimiento que se ejecuta cuando se cumple una condición establecida al realizar una operación. Dependiendo de la base de datos, los triggers pueden ser de inserción (INSERT), actualización (UPDATE) o borrado (DELETE). Algunas bases de datos pueden ejecutar triggers al crear, borrar o editar usuarios, tablas, bases de datos u otros objetos.
He aqui les dejare un ejemplo de como se crea un trigger en transac SQL utilizando la siguiente BD
use bd_cuenta //-- para llamar a la BD
//-- trigger dml, es para crear una restrigcion de alguna tabla
create trigger tr_cuenta
on cuenta
after update
as begin set nocount on--set nocount on impide que se generen mensajes de texto
set nocount on;
insert into cuenta(id_cuenta,cantidad)
select id_cuenta,cantidad
from inserted
end
//para ejecutar el trigger
update cuenta
set cantidad=cantidad + 10
where id_cuenta=2
select * from cuenta // para visualizar la tabla
//para alterar el trigger
alter trigger tr_cuenta
on cuenta
after update as
begin--set nocount impide que se generen mensajes de texto--con cada instruccion
set nocount on;
if update(cantidad)--solo si se actualiza el saldo
begin insert into cuenta(id_cuenta,cantidad)
select id_cuenta,cantidad
from insert
//-- trigger dml, es para crear una restrigcion de alguna tabla
create trigger tr_cuenta
on cuenta
after update
as begin set nocount on--set nocount on impide que se generen mensajes de texto
set nocount on;
insert into cuenta(id_cuenta,cantidad)
select id_cuenta,cantidad
from inserted
end
//para ejecutar el trigger
update cuenta
set cantidad=cantidad + 10
where id_cuenta=2
select * from cuenta // para visualizar la tabla
//para alterar el trigger
alter trigger tr_cuenta
on cuenta
after update as
begin--set nocount impide que se generen mensajes de texto--con cada instruccion
set nocount on;
if update(cantidad)--solo si se actualiza el saldo
begin insert into cuenta(id_cuenta,cantidad)
select id_cuenta,cantidad
from insert
end
end
alter trigger tr_cuenta
on cuenta
after update as
begin--set nocount impide que se generen mensajes de texto--con cada instruccion
set nocount on;
if update(cantidad)--solo si se actualiza el saldo
begin insert into cuenta(id_cuenta,cantidad)
select id_cuenta,cantidad
from insert
end
alter trigger tr_cuenta
on cuenta
after update as
begin--set nocount impide que se generen mensajes de texto--con cada instruccion
set nocount on;
if update(cantidad)--solo si se actualiza el saldo
begin insert into cuenta(id_cuenta,cantidad)
select id_cuenta,cantidad
from insert
rollback
end
end
//para desabilitar el trigger tr_cuenta
disable trigger tr_cuenta on cuenta
//para activar el trigger tr_cuenta
enable trigger tr_cuenta on cuenta
//desactivar todos los triger de la tabla cuenta
alter table cuenta disable trigger all
//activar todos los trigger de la tabla cuenta
alter table cuenta enable trigger all
//la siguiente instruccion impide que se ejecuten sentencias drop table y alter table en la base de datos
create trigger tr_seguridad
on database for drop_table,alter_table
as
begin
raiserror('no esta permitido borrar ni modificar tablas!',16,1)
rollback transaction
end
create table xx
(id_xx int not null,
descripcion varchar(50)
primary key(id_xx)
)
drop table xx
create trigger tr_seguridad1
on database for create_table
as
begin
raiserror('no esta permitido crear tablas!',16,1)
rollback transaction
end
create table yy
(id_yy int not null,
descripcion varchar(50)
primary key(id_yy)
)
end
end
//para desabilitar el trigger tr_cuenta
disable trigger tr_cuenta on cuenta
//para activar el trigger tr_cuenta
enable trigger tr_cuenta on cuenta
//desactivar todos los triger de la tabla cuenta
alter table cuenta disable trigger all
//activar todos los trigger de la tabla cuenta
alter table cuenta enable trigger all
//la siguiente instruccion impide que se ejecuten sentencias drop table y alter table en la base de datos
create trigger tr_seguridad
on database for drop_table,alter_table
as
begin
raiserror('no esta permitido borrar ni modificar tablas!',16,1)
rollback transaction
end
create table xx
(id_xx int not null,
descripcion varchar(50)
primary key(id_xx)
)
drop table xx
create trigger tr_seguridad1
on database for create_table
as
begin
raiserror('no esta permitido crear tablas!',16,1)
rollback transaction
end
create table yy
(id_yy int not null,
descripcion varchar(50)
primary key(id_yy)
)
Espero que les haya encantado he hecho mi mejor esfuerzo para que ustedes queridos amigos puedan aprender algo de lo poco que yo tambien se , y asi podemos compartir ideas ...
No hay comentarios:
Publicar un comentario
Tienes dudas y consultas sobre como posicionar una pagina web en google en primeros lugares.
Consulta con Nosotros :