2017-04-04 94 views
1

我正在使用SQL Server,并且存在删除触发器的问题,因为当有0行受到影响(删除)时它会被触发,并且我希望当一行受到影响时它被触发(已删除)。当0行受到影响时触发删除触发器

这会发生,因为我使用CASCADE

+1

在触发器的前端添加一个测试:'IF EXISTS(SELECT * FROM deleted)BEGIN' –

+0

谢谢,我会试试这个,但这是唯一的解决方案吗? – Cristian18

+2

只是为了澄清“我希望当一行受到影响时就会发生火灾” - 你也不会那么做。触发器触发*每个语句*。 'deleted'可以包含0,1或*多个*行。一个写得好的触发器可以处理所有这些情况。 –

回答

3

正如documentation指出:

触发火灾时任何有效的事件被激发,无论是否 没有任何表行受到了影响。

笑维尔吉尔在他的评论给你的解决方案。