关于sqlserver触发器的问题
因为业务需要,在同一张表上做了两个触发器:
CREATE TRIGGER [dbo].[TR_CheckInsCustomer]
ON [dbo].[t_organization]
AFTER INSERT
AS
BEGIN
UPDATE t_organization set ......
END
CREATE TRIGGER [dbo].[TR_CheckUpdCustomer]
ON [dbo].[t_organization]
AFTER UPDATE
AS
BEGIN
-----业务操作
END
现在遇到问题就是:在insert触发器中做update操作时,如何不去触发update触发器?
我试过在执行UPDATE操作前禁用UPDATE触发器,UPDATE语句后启用,这样是不行的
大家有什么好方法吗?
追问:将数据库选项“递归触发器已启用”设为false
ALTER DATABASE DBNAME SET RECURSIVE_TRIGGERS OFF
试过了也不行还是不行因为业务上要在INSERT时做更新操作
答案:供参考。
update触发器业务操作时比较inserted和deleted表中两个字段的值,一样就不执行业务操作。
其他:应该看下逻辑是否有问题,insert时为什么会update本表呢?感觉有点奇怪 不需要这个样。可以将你的触发器改一改。
第一个insert触发器改为instead of insert触发器,将所有的值都确定之后再插入,而不是插入之后再修改。update触发器可以不修改。
又或者再程序中将所有值确定后直接执行insert,不用写insert类型的触发器
上一个:sqlserver存储过程语法错误的问题
下一个:sqlserver怎样判断查询出来的表里 某列是否存在