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

gdlykj 2022-08-09 12:15:14

 

 

...全文
118 5 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复

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

  • 打赏
  • 举报
回复

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

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

你先把你的代理整理一下,弄成可以重现的、方便测试吧:
我模拟了你说的,并没有触发到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 行受影响)
*/
  • 打赏
  • 举报
回复 1
gdlykj 08-09
@吉普赛的歌 主要不知道是不是有其他触发器或者别的影响到
  • 举报
回复
吉普赛的歌 版主 08-09
@gdlykj 其它触发器?那就一个个禁用一个个试不就行了? 触发器还是尽量少用,万不得已的情况才用一次。
  • 举报
回复
发帖
MS-SQL Server

3.4w+

社区成员

MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
帖子事件
创建了帖子
2022-08-09 12:15
社区公告
暂无公告