首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

触发器为什么没有运行?解决方法

2012-02-11 
触发器为什么没有运行? 我在一个存储过程中有以下语句SET@SQL UPDATEConsignOutgo2SETConsignOutgo2Outgo

触发器为什么没有运行?

我在一个存储过程中有以下语句

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

热点排行
Bad Request.