34,588
社区成员
发帖
与我相关
我的任务
分享
有可能是表结构创建时,用了default 约束或外建约束,导致插入时,就会存在有值。
你的update是sql的update吗?还是程序里的update,别看着是update实际上是delete+insert了
你先把你的代理整理一下,弄成可以重现的、方便测试吧:
我模拟了你说的,并没有触发到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 行受影响)
*/