Ver Mensaje Individual
  #13 (permalink)  
Antiguo 06/03/2012, 21:35
samardj
 
Fecha de Ingreso: marzo-2009
Mensajes: 120
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: SQL server- Transac INSTEAD od update

saludos libras, estoy haciendo un triggerINSTEAD OF UPDATE.

Basicamente lo que entiendo es que si hago un triger AFTER UPDATE, ese triger se ejecuta despues de realizar la accion del update, hago las comprobaciones que tenga que hacer, sobre la tabla inserted , y si no cumple algun requisito personal hago un ROLLBACK TRANSACTION, osea deshago el update.

El INSTEAD OF UPDATE, se ejecuta antes de hacer el update en la tabla, y si pasa los requisitos personales, hago el update sobre la tabla, extrayendo los datos de la tabla inserted. (como lo defini en el mensaje anterior)

asi

el nombre de la tabla es inserted para los trigers, insert y update.

en mi caso estoy ejecuntando un INSTEAD OF UPDATE, hago una comprobacion y luego paso a actualizar desde la tabla inserted.

como tambien mostre en el mensaje anterior estoy imprimiendo ese id de la tabla inserted y corresponde al id del registro que estoy actualizando.

lo mas raro de todo es que, como mostre en un mensaje anterior, hice otro ejemplo en otra tabla, y si me hizo el update aplicando el INSTEAD OF UPDATE

he corrido un script para que me muestre los triggers activos en mi db.

USE prueba
GO

SELECT sys.sysobjects.name AS Tabla,sys.triggers.name AS [Trigger], sys.events.type_desc AS Evento,
case when is_disabled = 0
then
'ACTIVADO'
else
'DESACTIVADO'
END As Estado
FROM sys.triggers INNER JOIN
sys.events ON sys.triggers.object_id = sys.events.object_id INNER JOIN
sys.sysobjects ON sys.triggers.parent_id = sys.sysobjects.id
order by sys.sysobjects.name

y solo tengo un trigger UPDATE y es el que estamos discutiendo.

si deseas probarlo, al principio del hilo esta el script de crear tabla, y el de generar el triger para que lo pongas si quieres en tu maquina.

saludos