触发器为什么没有运行?
我在一个存储过程中有以下语句
SET @SQL= 'UPDATE ConsignOutgo2 SET ConsignOutgo2OutgoInvoiceID= '+CAST(@IDTo AS NVARCHAR)
+ ' WHERE (ConsignOutgo2ID IN '+@OutgoInvoiceDetail + ') AND (ConsignOutgo2OutgoInvoiceID=-1) '
EXEC(@SQL)
在表 ConsignOutgo2 有 AFTER INSERT UPDATE DELETE 触发器
但有时存储过程正确运行后触发器没有运行,请指点。
------解决方案--------------------SET @SQL= 'UPDATE ConsignOutgo2 SET ConsignOutgo2OutgoInvoiceID= ' ' '+CAST(@IDTo AS NVARCHAR)
+ ' ' ' WHERE (ConsignOutgo2ID IN ' ' '+@OutgoInvoiceDetail + ' ' ') AND (ConsignOutgo2OutgoInvoiceID=-1) '
EXEC(@SQL)
------解决方案--------------------1.檢查下表中的數據,確定代碼有執行UPDATE。
另外,檢查下,表中是否有滿足條件的數據
2.檢查下UPDATE觸發器的代碼,確保沒有錯誤。
------解决方案--------------------你傳入的參數是不是類似 '1,2,3 ' 這種格式的,如果是的話,可以不需要使用動態SQL語句,可以改用CharIndex實現,也可以避免調試動態SQL語句的嘛發。
UPDATE ConsignOutgo2 SET ConsignOutgo2OutgoInvoiceID= @IDTo
WHERE (CharIndex( ', ' + Cast(ConsignOutgo2ID As Varchar) + ', ', ', ' + @OutgoInvoiceDetail + ', ') > 0 AND (ConsignOutgo2OutgoInvoiceID=-1