我需要在更新值之前创建一个触发器来保存记录(通过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 ;
答案 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 ;