繁体   English   中英

SQL Server中的触发器

[英]Triggers in SQL Server

有两个Table Table_TriggerTable_Trigger1 。我在Table_Trigger1上创建了一个触发器。 效果很好。下面是我的触发器脚本-

CREATE TRIGGER Test_Trigger
ON Table_Trigger1

INSTEAD OF INSERT

AS
SET NOCOUNT ON

INSERT INTO Table_Trigger1(FirstName)
SELECT FirstName from INSERTED I
WHERE I.firstName in (SELECT FirstName from Table_Trigger)

当我的where条件为true时,我收到一条消息( 受影响的1行 )和值保存在表中。但是当我的where条件为false时,那段时间我也收到一条消息( 1行受影响的 )和值不保存在表中。

我的问题是-如果条件为false且值不保存在表中,那么为什么我收到了( 1行受影响 )消息。 该消息的含义是什么。

提前致谢。

简而言之,原始插入的“受影响的行”不知道触发器中幕后发生的事情。 它经过一行并认为该行“受影响”。

我试图找到一些文档来对此进行备份。 我能找到的最接近的是有关SqlCommand.ExecuteNonQuery的文档,该文档指出:

对于UPDATE,INSERT和DELETE语句,返回值是该命令影响的行数。 当要插入或更新的表上存在触发器时,返回值包括受插入或更新操作影响的行数以及受一个或多个触发器影响的行数。

当然,触发器中的SET NOCOUNT ON抑制了触发器中受影响的行数的返回,因此您只会看到原始insert语句的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM