2017-04-04 116 views
1

我正在使用SQL Server,並且存在刪除觸發器的問題,因爲當有0行受到影響(刪除)時它會被觸發,並且我希望當一行受到影響時它被觸發(已刪除)。當0行受到影響時觸發刪除觸發器

這會發生,因爲我使用CASCADE

+1

在觸發器的前端添加一個測試:'IF EXISTS(SELECT * FROM deleted)BEGIN' –

+0

謝謝,我會試試這個,但這是唯一的解決方案嗎? – Cristian18

+2

只是爲了澄清「我希望當一行受到影響時就會發生火災」 - 你也不會那麼做。觸發器觸發*每個語句*。 'deleted'可以包含0,1或*多個*行。一個寫得好的觸發器可以處理所有這些情況。 –

回答

3

正如documentation指出:

觸發火災時任何有效的事件被激發,無論是否 沒有任何錶行受到了影響。

笑維爾吉爾在他的評論給你的解決方案。