由于公司政策,特别是数据库管理员的建议,我不能使用触发器调用任何复杂的逻辑(在我的情况下,调用链接服务器存储过程)。
我被建议实现ServiceBroker体系结构,所以我的问题是这是否可能,以及如何将其与下面的逻辑结合起来,
将数据存储在队列中并将其传递到存储过程中。
我可能在这里缺少一些常识,但这是由于我对服务经纪人缺乏了解和完成时间。
CREATE TRIGGER [dbo].[BenRef_UPDATEtrg]
ON [dbo].[ITRAEN]
AFTER UPDATE
AS
SET ANSI_NULLS ON
SET ANSI_WARNINGS ON
BEGIN
IF UPDATE(poz2)
BEGIN
DECLARE @benRefNum VARCHAR(30);
DECLARE @partija VARCHAR(30);
DECLARE @unikum VARCHAR(30);
DECLARE @storeBenRef as table
(
BeneficiaryRef VARCHAR(30),
Partija VARCHAR(30) collate Serbian_Latin_100_CI_AS,
Datum DATETIME,
Unikum VARCHAR(30)
)
-- Trigger logic
INSERT INTO @storeBenRef ( BeneficiaryRef, Partija, Datum, Unikum)
SELECT i.poz2, i.PARTIJA,CONVERT(DATETIME,i.DOTVORANJE,121) AS datum,i.Unikum
FROM inserted i
INNER JOIN deleted d
ON i.PARTIJA = d.PARTIJA
SET @benRefNum = ( SELECT BeneficiaryRef FROM @storeBenRef);
SET @partija = ( SELECT partija FROM @storeBenRef);
SET @unikum = (SELECT Unikum FROM @storeBenRef);
/*
Linked server procedure using retrieved data as parameters
*/
EXEC [EXPSRV1].[OPR].[dbo].[BenRefUpdate] @BenRefNum = @benRefNum, @Party = @partija,@Arrangement_unikum = @unikum;
END