Ms Sql插入触发器以影响其他表

问题描述 投票:0回答:1

table b插入时,我试图把table a值,但没有任何影响table b。它就像没有trigger。你有什么建议吗?我试过下面但没有结果。

alter trigger triggername on tablea after insert as
begin
update tablea set valuetablea_a = valuetablea_b where id = (select distince id from inserted)
end

begin 
update tableb set valuetableb_a = (select valuetablea_a from tablea where id = (select distincd id from Inserted))
where date = (select distinct date from Inserted)
end
sql-server database sql-server-2008 triggers
1个回答
0
投票

试试这个:

ALTER TRIGGER triggername ON tablea AFTER INSERT AS
BEGIN

UPDATE a 
SET 
    valuetablea_a = I.valuetablea_b
    FROM tablea A
        INNER JOIN inserted I
            ON A.Id = I.Id

UPDATE B
    SET
        valuetableb_a = A.valuetablea_a 
        FROM tableb  B
            INNER JOIN tablea 
            ON 1=1 AND EXISTS
            (
                SELECT 1 FROM inserted WHERE ID = A.ID AND [Date] = B.DATE
            ) 
end

在第一次更新中,您将提供此功能

update tablea set valuetablea_a = valuetablea_b

这意味着从TableA更新已更新的每一行的值valuetablea_b到valuetablea_a的值。而不是从Updated valuetablea_b列获取值

第二次更新通过匹配更新记录中的Id和Date文件来更新TableB.valuetableb_a中的值

© www.soinside.com 2019 - 2024. All rights reserved.