相关疑难解决方法(0)

插入同一个表时有两个触发器

这是一个非常有趣的问题.我正在使用SQL Server 2008.我在一个公用表上有两个触发器,说'CommonTable'.一个触发器正在更新,另一个触发器正在插入/更新/删除.

  • 在第一个触发器"Trigger1"中,我进行检查/回滚,有时根据业务逻辑更改新插入的值.这是示例代码

-

CREATE TRIGGER [dbo].[Trigger1] ON [dbo].[CommonTable]
FOR UPDATE
UPDATE [CommonTable] 
SET 
    [StatusCode] = 'New Value'
WHERE 
[RecId] = 'rec id value'
Run Code Online (Sandbox Code Playgroud)
  • 在第二个触发器"Trigger2"中,我将新插入/删除/更新的值从'CommonTable'表存储到另一个表'CommonTable_History'以进行历史记录跟踪.这是示例代码

-

CREATE TRIGGER [dbo].[Trigger2] ON [dbo].[CommonTable]
FOR INSERT, UPDATE, DELETE

--based on logic read the value from DELETED or INSERTED table and store in other table.

SELECT @RowData = (SELECT * FROM DELETED AS [CommonTable] WHERE [RecId] = @RowRecId FOR XML AUTO,                       BINARY BASE64 , ELEMENTS)

--and then insert @RowData in 'CommonTable_History' table.
Run Code Online (Sandbox Code Playgroud)

在'sp_settriggerorder'的帮助下,我已经设置了这些触发器的执行顺序,因此首先执行"Trigger1",然后执行"Trigger2". …

sql sql-server

5
推荐指数
1
解决办法
4609
查看次数

标签 统计

sql ×1

sql-server ×1