insert触发器触发的同时为什么连update也触发??

gdlykj 2022-08-09 12:15:14

 

 

...全文
146 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
morliz子轩 2022-08-12
  • 打赏
  • 举报
回复

有可能是表结构创建时,用了default 约束或外建约束,导致插入时,就会存在有值。

锟斤拷锟斤拷 2022-08-10
  • 打赏
  • 举报
回复

你的update是sql的update吗?还是程序里的update,别看着是update实际上是delete+insert了

吉普赛的歌 版主 2022-08-09
  • 打赏
  • 举报
回复 1

你先把你的代理整理一下,弄成可以重现的、方便测试吧:
我模拟了你说的,并没有触发到update:

USE tempdb
GO
IF OBJECT_ID('t') IS NOT NULL
DROP TABLE t
GO
CREATE TABLE t(
 p INT    
)
GO
CREATE TRIGGER trig_t_I ON t FOR INSERT
AS
BEGIN
    IF EXISTS(SELECT 1 FROM INSERTED WHERE ISNULL(p,0)>0)
    BEGIN
        RAISERROR('1',18,18)
    END
END
GO
INSERT INTO t(p) VALUES(0);
/*
(1 行受影响)
*/
GO
UPDATE t SET p=1
/*
(1 行受影响)
*/
gdlykj 2022-08-09
  • 举报
回复
@吉普赛的歌 主要不知道是不是有其他触发器或者别的影响到
吉普赛的歌 版主 2022-08-09
  • 举报
回复
@gdlykj 其它触发器?那就一个个禁用一个个试不就行了? 触发器还是尽量少用,万不得已的情况才用一次。

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧