Mysql Trigger查询加入其他表

时间:2015-12-04 23:40:20

标签: mysql triggers

我需要在更新值之前创建一个触发器来保存记录(通过JOIN与另一个表获得)在审计表中。

我不太了解触发器,但我创造了这个。

可以使它有效吗?

报告的错误是:

#1415 - Not allowed to return a result set from a trigger 

*我应用触发器的表是DESKTOP,我获取了相对记录的Name和Surname字段,并在表Users上获得了连接,反之亦然。

DELIMITER //

    CREATE TRIGGER desktop_befUpd
    BEFORE UPDATE
       ON desktop FOR EACH ROW

    BEGIN

        SELECT
        Name,Surname,id
        FROM
        users
        JOIN
        (
        SELECT ID,IDAIFA,brand,model,id_users FROM desktop
        ) dev ON users.id = dev.id_users;

       -- Insert record into audit table
       INSERT INTO data_history
       ( IDAIFA,
         dt_datetime,
         Name,
        Surname
       )
       VALUES
       ( dev.IDAIFA,
         NOW(),
         users.Name,
       users.Surname );

    END; //

    DELIMITER ;

1 个答案:

答案 0 :(得分:0)

由于您当前表单中的select可能会返回很多行,因此我最好猜测您需要/正在尝试做什么:

DELIMITER //

CREATE TRIGGER desktop_befUpd
BEFORE UPDATE ON desktop FOR EACH ROW
BEGIN
   INSERT INTO data_history (IDAIFA, dt_datetime, Name, Surname)
   SELECT OLD.IDAIFA, now(), u.name, u.surname
   FROM users AS u 
   WHERE u.id = OLD.id_users
   ;

END //

DELIMITER ;