Está en la página 1de 5

LABORATORIO N° 01 – SESIÓN 04

use data
create table persona(
id int primary key,
nombre varchar(60),
sueldo money,
telefono varchar(8)
)

select * from persona

--vista actualizable
create view w_vista
as
select * from persona

insert w_vista values (50,'Josefina Lopez',2500,'000-0000')


insert w_vista values (51,'Pepe Campos',3500,'000-0000')
insert w_vista values (52,'Elena Zamudio',28000,'453-6252')

delete from w_vista where id=50


update w_vista set sueldo=4000 where id=52

select * from w_vista


----TRIGGERS
--DESENCADENADOR, DISPARADOR, GATILLO
Ejemplos de trigger para llevar un log cuando se realiza alguna transacción (I: Inserción,
U: update, D:Delete) sobre la tabla cargo.

--------------------------------------------------

create trigger tr_ejemplo_1


on cargo
for insert
as
print 'Se disparo el TRIGGER'
---------------------------------------------------
select * from cargo
--Para probar el trigger
insert cargo values(10,'Analista Procesos')

select getdate() as fecha ,'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' as usuario,*

into aud_cargo from cargo where 1=0

select * from aud_cargo


--select getdate(), host_name()
drop table aud_cargo

--------------------------------------------

alter trigger tr_ejemplo_1


on cargo
for insert
as
print 'Se disparo el TRIGGER'
insert aud_cargo select getdate(), host_name(),idcargo,descargo
from inserted
----------------------------------------------
insert cargo values(20,'Administrador Base Datos')
insert cargo values(30,'Administrador Tienda')
--se crea la tabla aud_cargo_ope a partir de aud_cargo
select 'tipo' as tipo,* into aud_cargo_ope from aud_cargo where 1=0
select * from aud_cargo_ope
select * from cargo

----------------------------------------------------------------

alter trigger tr_ejemplo_1


on cargo
for insert
as
print 'Se disparo el TRIGGER'
insert aud_cargo_ope select 'I',getdate(), host_name(),idcargo,descargo
from inserted
------------------------------------------------------------------
--para probar el trigger
insert cargo values(25,'Administrador REDES')

select suser_sname()

-----------------------------------------------------------------
create trigger tr_ejemplo_2
on cargo
for delete
as
print 'Se disparo el TRIGGER de DELETE'
insert aud_cargo_ope select 'D', getdate(), host_name(), idcargo, descargo
from deleted

------------------------------------------------------------------

--select * from deleted --tabla disponible dentro del trigger cuando se ejecuta
--para probar el trigger:
delete from cargo where idcargo=20
delete from cargo where idcargo=30
Ejercicios PROPUESTOS

1. Sobre la tabla pedido que tiene la siguiente estructura: (4 puntos)


 Idpedido int
 fecha datetime
 tdoc varchar(3)
 serie varchar(3)
 num int
 monto Money

Se requiere llevar el registro de la acción realizada en la tabla pedido y tener un log de


los siguientes datos: Idpedido, fecha, monto, tipo (I: Inserción, U: update, D:Delete),
fecha y hora servidor (ocurrencia de la transacción). La tabla de log se llama
auditoria_pedido

Se desea implementar un trigger que pueda llevar el log requerido.


Create trigger tr_auditoria
on pedido
for insert, update, delete

declare @ins int, @del int

set @ins=
set @del=

También podría gustarte