SQL Server 2005使用更新语句插入触发器

时间:2009-08-25 22:54:40

标签: sql-server-2005 triggers

我目前不在某个地方测试任何这个,但想知道这是否是一个选项,所以我可以开始设计解决方案了。

我想在表上创建一个插入触发器。在这个插入触发器中,我想从inserted虚拟表中获取值并使用它们来更新同一个表。这会工作还是会进入某种无限循环(即使触发器不是用于更新命令)。

作为示例,如果插入了一行(代表供应商的新费率/成本),我想更新同一个表,以使该供应商的旧费率/成本到期。过期是必要的,因为更新已经存在的记录,因此可以保留费率/成本的历史记录以用于报告目的(更不用说当前的报告基础结构期望发生这种类型的事情,并且我们正在将当前报告/数据迁移到SQL服务器)。

谢谢!

2 个答案:

答案 0 :(得分:1)

如果您只有 一个INSERT触发器而没有UPDATE触发器,那么没有任何问题,但我认为您还要捕获UPDATE甚至DELETE。

INSTEAD OF触发器保证不会递归:

  

如果在a上定义了INSTEAD OF触发器   table执行一个语句   通常会开火的桌子   INSTEAD OF再次触发,触发器   不是递归调用的

使用和INSTEAD OF触发器,您必须同时执行原始INSERT和所需的更新。

答案 1 :(得分:0)

如果你没有在另一个UPDATE触发器中执行INSERT,这听起来不会对我造成任何问题。