2011-07-14 38 views
1

例如:获得的值来创建已通过使用INSERT命令触发可以做到以下几点:如何获取已更新的值?

SELECT @pid=Product_ID, @q=Item_Quantity, @invid=Invoice_ID FROM Inserted 

所以,我将有机会获得已通过用INSERT命令和值在我的触发器中使用它们在SQL Server中。 什么是UPDATE命令的等价物? 我将如何获得我将通过UPDATE命令从我的程序传递给SQL Server的值? 类似下面给我一个错误:

SELECT @pid=Product_ID, @q=Item_Quantity, @invid=Invoice_ID FROM Updated 
+1

如果您有触发器,并且您尝试以任何形式或形式将任何值设置为标量变量,则需要重新设计。 SQl服务器中的触发器不是一次一个地操作记录组。您需要现在重写任何现有的触发器,因为您可能正在创建数据完整性混乱。 – HLGEM

回答

0

您需要使用inserted和deleted的组合,知道什么是更新。对于更新的每一行,原始值将显示在“已删除”中,新值将显示在“已插入”中。

因此,如果您只是想从UPDATE获取新值,则可以使用与用于INSERT的查询相同的查询。

+0

谢谢。有效! – nummer31

+0

部分正确,但原始代码已经存在致命缺陷。 – HLGEM

+0

@ nummer31,请确保您使用更新多个记录的更新进行测试。 – HLGEM