我注意到一种对我来说非常奇怪的行为。如果我做了一个插入选择语句并且选择部分没有返回数据,插入部分仍然执行,甚至调用插入触发器(在插入触发器中,插入的伪表中有 0 行)。
例子:
insert into table1 column1
select column1 from table2 where condition = 'Never met'
输出:
(0 row(s) affected) // 0 rows inserted
(1 row(s) affected) // log from trigger
可能是由“通用”触发器引起的(同时声明为 FOR INSERT、UPDATE、DELETE)?我知道这更像是假设性问题,我必须接受这种行为。但是为什么会这样呢?对我来说完全是无稽之谈。我正在使用 SQL Server 2005。
——奎蒂