【问题标题】:compare new inserted value between two table in mysql trigger比较mysql触发器中两个表之间的新插入值
【发布时间】:2021-06-19 18:28:46
【问题描述】:

其实我需要比较 MySQL 触发器中 2 个表之间新插入的值。我应该怎么做?

例如,我有 tableA 和 tableB 并且两者都具有相同的表结构。如果对 tableC 进行任何插入,则 tableC 中的 new.id 应该与 tableA 和 tableB 进行比较,然后它应该更新相应表中的值(id 不可能出现在两个表中,它将出现在任何一个表中一张表)。我需要帮助才能在触发器中编写此内容。

【问题讨论】:

    标签: mysql sql database triggers database-administration


    【解决方案1】:
    CREATE TRIGGER tr
    AFTER INSERT 
    ON tableC
    FOR EACH ROW
    BEGIN
        UPDATE tableA SET tableA.val = NEW.val WHERE tableA.id = NEW.id;
        UPDATE tableB SET tableB.val = NEW.val WHERE tableB.id = NEW.id;
    END
    

    如果表(tableAtableB)包含该值,则将更新相应的(否则 - 无)行。


    更新表会有所不同。例如,如果在 tableA 中找到 new.id 值,则 update xyz set xyz.val='tablea.val' where id=new.id

    没问题。更新查询将是

    UPDATE xyz
    JOIN tableA ON xyz.id = tableA.id
    SET xyz.val = tableA.val 
    WHERE tableA.id = NEW.id;
    

    注意 - tableA.val 是表 tableA 中列 val 的值,而 'tableA.val' 是具有指定值的普通字符串文字,指的是无。

    【讨论】:

    • 更新表会有所不同。例如,如果在 tableA 中找到 new.id 值,则更新 xyz set xyz.val='tablea.val' where id=new.id
    • @Kulal 更新。
    猜你喜欢
    • 2019-04-24
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多