读取触发器在不同表中插入的值

时间:2012-01-19 16:39:57

标签: sql tsql triggers

我遇到了以下问题:我在表A上有一个触发器,其目的是计算一些值并将它们插入完全不同的表B. 问题是,在该逻辑的某个地方,有一个循环需要将新插入表B的值。 我注意到SQL Server在退出触发器后立即执行所有INSERT命令。

ALTER TRIGGER [dbo].[InsertTrade]
ON [dbo].[Blotter]
AFTER INSERT
AS 
BEGIN

/* compute @Variables */

INSERT INTO [dbo].[CompletelyUnrelatedTableWithoutTriggersOnIt]
VALUES @Variables

COMMMIT是否有INSERT表示{{1}}能够在触发器中读取这些值的方法吗?

谢谢, d。

1 个答案:

答案 0 :(得分:1)

首先,要非常小心如何构建触发器。如果您在触发器中使用INSERT...VALUES(),则表明您假设INSERTED表中只有一条记录,这是一个很好的迹象。永远不要做那个假设。相反,您的逻辑应该是INSERT...SELECT <computed cols> FROM INSERTED

其次,如果你想要输出你刚才输入的值,你可以使用OUTPUT条款,但我不确定你的意思是什么(你不清楚自己想要做什么然后,您将可以访问“仍然在触发器中”插入的最终值

如果你想要什么,也许将所有这些功能封装到proc中会更好。

相关问题