2014/05/07

TABLAS INSERTED, DELETED EN TRIGGERS

Hola que tal amigos, en ocasiones necesitamos conocer cuales son los datos insertados, modificados o borrados, es posible conocer esto para almacenarlos en una tabla donde tengamos el control de nuestras tablas para su uso posterior, debemos utilizar TRIGGERs o disparadores.

Crearemos nuestra tabla de ejemplo:
CREATE TABLE tablaPruebas ( 
 cve TINYINT
 , nombre VARCHAR(30)
 , fecha DATE
)

Después crearemos nuestro TRIGGER en el cual podemos especificar las tablas virtuales INSERTED y DELETED, donde indicaremos que se dispare después de un INSERT, UPDATE o DELETE y que haga una consulta a las tablas lógicas antes mencionadas para ver su contenido.
CREATE TRIGGER dbo.triggerTablaPruebas ON tablaPruebas
AFTER INSERT, UPDATE, DELETE
AS
 SELECT * FROM deleted; 
 SELECT * FROM inserted;

Insertamos algunos datos:
INSERT INTO tablaPruebas
VALUES( 1, 'PEDRO' , '20130101' ) 
, ( 2 , 'JUAN', '20130403' )

Como podemos observar solo hay datos en la tabla INSERTED.
Ahora modificaremos una fila:
UPDATE tablaPruebas
SET nombre = 'LUIS' , fecha = '20101212'
WHERE cve = 2

El resultado es:
Es necesario especificar que no existe una tabla virtual UPDATED, el funcionamiento es parecido o idéntico a eliminar y después insertar.

Ahora realizamos un DELETE:
DELETE FROM tablaPruebas
WHERE cve = 1
Si necesitamos de los valores antes que sufran algún cambio o si necesitamos llevar la bitácora de cambios, esto es una buena idea que nos puedes ser de gran ayuda.

SALUDOS!
COMPARTE ESTA INFORMACION SI TE PARECIO INTERESANTE

0 comentarios:

Publicar un comentario