creando trigger en transac sql

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    
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
     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)
)

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 :