【问题标题】:MySQL Trigger to insert data into different DBMySQL触发器将数据插入不同的数据库
【发布时间】:2011-10-30 23:41:30
【问题描述】:

听起来很简单...我花了几个小时才让第一部分工作,这是一个 mysql 触发器到不同的数据库。现在我想变得聪明起来,加入几张桌子。

我有两个主表 PROJ 和 COMP。两者都共享id。当 PROJ 被插入时,我想将一些 NEW.PROJ 信息和一些 COMP 信息插入到 db.table axis.axis_data 的单行中

有人可以帮我用 TRIGGER 做一个SELECT...INSERT。我可能在这个问题上不知所措

我的工作触发器。

DELIMITER $$

DROP TRIGGER IF EXISTS `rate_data_trigger` $$

CREATE TRIGGER rate_data_trigger
    BEFORE INSERT on PROJ FOR EACH ROW
    BEGIN

        INSERT INTO axis.axis_data
            (projinfo_table_id, rate_user, name,
             property_owner, property_address, property_city,
             property_state, property_zip, property_phone,
             rating_date, rating_type, rating_reason, rating_number
            )  

        VALUES
            (NEW.id, user(), NEW.BLGNAME,
             NEW.POWNER, NEW.STREET, NEW.CITY,
             NEW.STATE, NEW.ZIP, NEW.PHONE,
             NEW.RATDATE, NEW.RATTYPE, NEW.RATREAS, NEW.RATNGNO
            );
    END$$
DELIMITER ;

【问题讨论】:

    标签: mysql


    【解决方案1】:

    只需在您的选择语句中使用以下语法:

    INSERT INTO axis.axis_data
            (projinfo_table_id, rate_user, name,
             property_owner, property_address, property_city,
             property_state, property_zip, property_phone,
             rating_date, rating_type, rating_reason, rating_number,
             field1, field2
            )  
    
        SELECT NEW.id, user(), NEW.BLGNAME,
             NEW.POWNER, NEW.STREET, NEW.CITY,
             NEW.STATE, NEW.ZIP, NEW.PHONE,
             NEW.RATDATE, NEW.RATTYPE, NEW.RATREAS, NEW.RATNGNO,
             c.field1, c.field2
        FROM COMP c WHERE c.id = NEW.id
    

    如果COMP在PROJ中并不总是有对应的记录,你可以使用SELECT ... FROM DUAL LEFT JOIN COMP c ON c.id = NEW.id

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-24
      • 2019-05-20
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 2013-05-29
      • 1970-01-01
      相关资源
      最近更新 更多