necesito ejemplo de SQL Server de actualización se activa, Get campos antes y después actualizado para ejecutar SQL declaraciones provistas en otra tablaSQL Server Update gatillo, Get campos antes y después actualizado
Respuesta
SQL Server causas no tienen acceso a las tablas 2 "mágicas" que contienen una fila para cada fila que se inserta, actualiza o suprime en la declaración que hizo el gatillo para ejecutar.
Para buscar todos los registros insertados en una instrucción INSERT:
select * from inserted
Para todas las filas eliminadas en una instrucción DELETE:
select * from deleted
Para las instrucciones UPDATE, cada fila actualizada será presente tanto en las tablas insertadas como en las eliminadas La tabla insertada mantendrá el nuevo valor de la fila después de la declaración de actualización, y la tabla eliminada mantendrá el valor anterior de la fila justo antes de la instrucción de actualización. Únase entre las dos tablas para obtener lo que necesita:
select i.*, d.*
from inserted i
join deleted d on (i.id = d.id)
que querrá el gatillo especial elimina y tablas insertadas De MSDN:
En DML disparadores, las tablas insertadas y eliminadas se utilizan principalmente para llevar a cabo lo siguiente: Extender integridad referencial entre tablas. Insertar o actualizar datos en tablas base subyacentes a una vista. Prueba de errores y toma medidas en función del error. Encuentra la diferencia entre el estado de una tabla antes y después de una modificación de datos y toma medidas basadas en esa diferencia. La tabla eliminada almacena copias de las filas afectadas durante las instrucciones DELETE y UPDATE. Durante la ejecución de una instrucción DELETE o UPDATE, las filas se eliminan de la tabla de desencadenantes y se transfieren a la tabla eliminada. La tabla eliminada y la tabla de desencadenantes normalmente no tienen filas en común. La tabla insertada almacena copias de las filas afectadas durante las instrucciones INSERT y UPDATE. Durante una transacción de inserción o actualización, se agregan nuevas filas tanto a la tabla insertada como a la tabla de activación. Las filas en la tabla insertada son copias de las nuevas filas en la tabla de disparadores.
Este enlace está muerto. ¿Puedes actualizarlo? –
@FedericoTraiman, el enlace parece funcionar para mí, calculé que un enlace msdn probablemente no desaparecería. Sin embargo, he agregado algo del contenido al cuerpo de la respuesta. –
¡Está vivo ahora! Gracias –
- 1. SQL Server gatillo conmutador Insertar, eliminar, actualizar
- 2. IF UPDATE() en el gatillo del servidor SQL
- 3. PyTables lotes get y update
- 4. Campos personalizados en .Net y SQL Server
- 5. subconsultas en UPDATE SET (sql server 2005)
- 6. campos 'creado en' y 'actualizado en'
- 7. T-SQL Trigger Update
- 8. PostgreSQL gatillo y filas actualizadas
- 9. SQL - Obteniendo el valor actualizado
- 10. Obtenga todo antes y después de cierto carácter en SQL Server
- 11. ¿Cómo probar una instrucción SQL Update antes de ejecutarla?
- 12. Campos personalizados con SQL Server 2008
- 13. SQL Server - cláusula IN con múltiples campos
- 14. Cómo puedo documentar tablas y campos en SQL Server 2005
- 15. ¿Encontrar qué campos se han actualizado después de llamar a los atributos de actualización?
- 16. SQL Server ofrece algo como MySQL ON DUPLICATE KEY UPDATE
- 17. .Net SQL Server Database Monitoring - Insert, Update, Delete
- 18. SQL Server - ¿Dispara afecta @@ Rowcount?
- 19. Postgres gatillo después de insertar el acceso a nuevos
- 20. Transacción MySQL y gatillo
- 21. Diferencia entre Alter y Update SQL
- 22. php sql update join
- 23. Disparadores SQL: ¿cómo obtengo el valor actualizado?
- 24. error de PostgreSQL gatillo
- 25. Indexando campos individuales de claves compuestas de SQL Server
- 26. Como llegar de SQL para supervisar la ejecución del gatillo
- 27. SQL Server 2008 y HashBytes
- 28. gatillo para insertar sysdate después de una inserción en Oracle
- 29. linq to sql update standard
- 30. Transacción de SQL Server y instrucción SELECT
+1 gracias por el hecho de que las filas de actualización están presentes tanto en tablas eliminadas como insertadas. – mdma
Tanto como me gusta esta solución, me gustaría señalar que _si_ la tabla referida por el desencadenador no tiene una clave principal, la instrucción 'update' no será útil :( –
Siempre que haya alguna manera de se unirá de manera significativa entre las dos tablas (como la cláusula WHERE de la instrucción UPDATE usada habitualmente), será significativa, incluso si la tabla no tiene una clave primaria formal. –