Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tsql 插入和更新会触发删除触发器吗?_Tsql - Fatal编程技术网

Tsql 插入和更新会触发删除触发器吗?

Tsql 插入和更新会触发删除触发器吗?,tsql,Tsql,我的处境很不幸,需要向表中添加触发器来跟踪对遗留系统的更改。我在表A上有insert、update和delete触发器,每个触发器都将两列的值写入表B,如果由delete触发器填充,则位标志设置为1 表_B中的每个条目显示两次。insert包含两行,update创建两行(我们相信),delete创建一个insert,然后是delete 是传统应用程序在这样做,还是SQL在这样做 编辑(添加更多详细信息): 触发器主体: 。。删除后 INSERT INTO TableB(col1, isdelet

我的处境很不幸,需要向表中添加触发器来跟踪对遗留系统的更改。我在表A上有insert、update和delete触发器,每个触发器都将两列的值写入表B,如果由delete触发器填充,则位标志设置为1

表_B中的每个条目显示两次。insert包含两行,update创建两行(我们相信),delete创建一个insert,然后是delete

是传统应用程序在这样做,还是SQL在这样做

编辑(添加更多详细信息):

触发器主体:

。。删除后

INSERT INTO TableB(col1, isdelete) SELECT col1, 1 from DELETED
。。插入后

INSERT INTO TableB(col1, isdelete) SELECT col1, 0 from INSERTED
。。更新后

INSERT INTO TableB(col1, isdelete) SELECT col1, 0 from DELETED

我尝试了profiler,没有看到任何重复的语句被执行。

可能是应用程序在看到对其数据的操作时再次更改了数据

触发器也可能存在于其他地方——是否有可能在TableB上有一个正在创建额外行的触发器


需要更详细的信息才能更全面地解决这个问题。

如果没有一些额外的信息:触发器代码,以及一个简单的表数据前后示例,我认为任何人都无法帮助您。您可能想看看。它可以帮助您确定应用程序正在执行的操作。添加了更多详细信息。。。问:您是否检查了表上的触发器是否比预期的多?我刚刚编写了你的场景,每个DM操作我得到1行。