【问题标题】:Trigger not firing when data updating replication数据更新复制时触发器不触发
【发布时间】:2012-01-17 09:57:50
【问题描述】:

我在不同的服务器上有两个数据库,并且我已经实现了复制以在两个数据库之间同步数据。

我在订阅数据库上有一些触发器,当通过复制进行任何更改时,这些触发器不会触发。

请为此提出解决方案。

Create TRIGGER [dbo].[Ins_SLab]
   ON  [dbo].[Slab] 
   AFTER Insert
AS 
BEGIN
Declare @ProductId int
set @ProductId =(select PurchaseProductID from Inserted)
set @ProductId =(select ProductID from dbo.PurchaseProduct where ID = @ProductId)
insert into tblTestTriger values('Hold Product Update',@ProductId)
End
Go

【问题讨论】:

  • 请从触发器中发布一些代码。

标签: sql sql-server


【解决方案1】:

好吧,您没有指定了NOT FOR REPLICATION 选项,这是最明显的原因。

但第二个最明显的原因是触发器可能正在触发。但是因为您编写的触发器假定它仅适用于一行,所以它将仅适用于每批复制行中的一行。

相反,您需要将inserted 视为一个表格,并重新编写触发器以使所有内容始终基于集合 - 如果您分配给变量,那么您做错了。

insert into tblTestTriger --TODO: Explicit column list
select 'Hold Product Update',pp.ProductId
from inserted i
   inner join
    dbo.PurchaseProduct pp
   on i.PurchaseProduct = pp.ID

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-06
    • 2012-07-01
    • 2016-02-06
    • 2010-11-14
    • 2019-12-19
    • 1970-01-01
    • 2017-11-08
    相关资源
    最近更新 更多