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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ms Sql插入触发器以影响其他表相关的知识,希望对你有一定的参考价值。

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
答案

试试这个:

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中的值

以上是关于Ms Sql插入触发器以影响其他表的主要内容,如果未能解决你的问题,请参考以下文章

pl/sql 触发器完整性约束问题

sql 插入触发器后的MS SQL

sql插入的操作

Oracle:计算并插入到其他表触发器/过程

创建触发器以在更新表之后插入

SQL 创建触发器以在特定条件下更新表