当前位置:数据库 > SQLServer >>

关于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怎样判断查询出来的表里 某列是否存在

Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,