后,我需要例如SQL服务器更新触发器,获取前和更新后 领域的另一个表执行sql statmentsSQL服务器更新触发器,获得前场和更新
回答
SQL服务器将触发有权访问包含该插入,更新,或导致触发器执行的语句删除各行的第2行“神奇”的表格。
要查找所有插入的行的一个INSERT语句:
select * from inserted
对于所有在DELETE语句中删除的行:
select * from deleted
对于UPDATE语句,每行更新会存在于插入和删除的表格中。插入的表将在更新语句之后保存行的新值,并且删除的表将保存更新语句之前的行的旧值。在两张桌子之间加入以获得所需内容:
select i.*, d.*
from inserted i
join deleted d on (i.id = d.id)
你所需的特殊触发删除,插入表格。从MSDN:
在DML触发器,插入和删除的表主要用来执行以下步骤: 扩展表之间的参照完整性。 在基础视图的基表中插入或更新数据。 测试错误并根据错误采取措施。 找到数据修改前后表格的状态之间的差异,并根据该差异采取行动。 删除的表在DELETE和UPDATE语句中存储受影响的行的副本。在执行DELETE或UPDATE语句期间,将从触发器表中删除行并将其传输到已删除的表中。删除的表和触发器表通常没有行。 插入的表在INSERT和UPDATE语句中存储受影响的行的副本。在插入或更新事务期间,将新行添加到插入的表和触发器表中。插入表中的行是触发器表中新行的副本。
此链接已死亡。你能更新它吗? – 2016-07-04 14:47:37
@FedericoTraiman,该链接似乎为我工作,想通过msdn链接可能不会死。尽管我已将一些内容添加到答案的正文中。 – 2016-07-05 14:54:12
它现在还活着!谢谢 – 2016-07-06 13:58:08
- 1. 我的SQL触发器更新之前
- 2. T-SQL触发器更新
- 3. SQL触发器更新
- 4. SQL触发器更新行
- 5. SQL Server触发器更新
- 6. 更新触发器SQL Server
- 7. SQL更新触发器
- 8. SQL Server 2005触发器更新远程服务器
- 9. SQL Server触发器和批量更新
- 10. SQL服务器更新
- 11. SQL服务器(更新)
- 12. 更新SQL服务器
- 13. 更新列SQL服务器
- 14. SQL服务器获得的触发
- 15. 如何获取SQL服务器触发器中已更新列的列表?
- 16. 从VCS更新现场服务器
- 17. SQL服务器:触发更新刚刚插入的行
- 18. SQL服务器触发更新SharePoint列表
- 19. SQL服务器触发帮助 - 相同的表更新
- 20. 从INSERT触发器更新时触发更新后未触发
- 21. 多行更新SQL触发器从单一更新SQL语句
- 22. 更新字段按触发器更新
- 23. 更新触发器上的Mysql更新
- 24. 更新前的PostgreSQL触发器
- 25. Oracle SQL触发器插入/更新---
- 26. 插入更新触发器后PL/SQL
- 27. T-SQL更新触发器帮助
- 28. SQL Server触发器更新列值
- 29. 基本的SQL更新触发器
- 30. 更新或删除SQL触发器
+1感谢关于删除和插入表中存在更新行的观点。 – mdma 2010-06-08 11:46:49
尽管我喜欢这个解决方案,但我想指出_if_触发器引用的表没有主键,'update'语句将不会有用:( – 2017-07-25 12:37:48
只要有一些方法在两个表之间进行有意义的连接(例如通常使用的UPDATE语句的WHERE子句),即使该表没有正式的主键,它也将是有意义的。 – 2017-07-26 07:11:59