SQLServer数据库触发器-update

概念:

触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。 触发器可以从 DBA_TRIGGERS ,USER_TRIGGERS 数据字典中查到。
timg.jpg

触发器和存储过程的区别:

触发器与存储过程的区别是运行方式的不同,触发器不能执行EXECUTE语句调用,而是在用户执行Transact-SQL语句时自动触发执行而存储过程需要用户,应用程序或者触发器来显示地调用并执行。

例子:当SA_SaleDelivery表发生update操作时,修改其中字段is_synchronous 的值

  1. --判断触发器是否存在
  2. IF EXISTS (SELECT * FROM sys.triggers WHERE object_id = OBJECT_ID(N'[dbo].[TR_SA_SaleDelivery_IDU]'))
  3. DROP TRIGGER [dbo].[TR_SA_SaleDelivery_IDU] --删除
  4. GO
  5. USE [UFTData337564_100012]
  6. GO
  7. SET ANSI_NULLS ON
  8. GO
  9. SET QUOTED_IDENTIFIER ON
  10. GO
  11. create trigger [dbo].[TR_SA_SaleDelivery_IDU]
  12. ​ on [dbo].[SA_SaleDelivery]
  13. ​ after update
  14. AS
  15. ​ declare @id int
  16. ​ select @id = id from inserted
  17. ​ print @id
  18. ​ update [SA_SaleDelivery] set is_synchronous = 0 where id = @id
Last modification:January 9th, 2019 at 01:02 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment