0
我有必要创建一个触发器,以便在更新值之前在审计表中保存记录(通过与另一个表的JOIN获得)。Mysql触发查询加入其他表
我不太了解触发器,但我创建了这个。
是否有可能使其工作?报道
错误是:
#1415 - Not allowed to return a result set from a trigger
*上,我应用了触发器的表是桌面和我得到一个名字和一个连接上表的用户,或者相反相对记录的姓字段。
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 ;
你通常可以得到这样的事情使用单个“INSERT INTO ... SELECT”查询进行工作;但触发器在引用触发器附加在触发器中的表时非常挑剔,因此让子查询使用“desktop”可能会导致问题。如果你想“记录”以前的值,使用'OLD。[fieldname]'和'NEW。[fieldname]'更有可能是你应该使用的。 – Uueerdo
@Uueerdo它会*引发问题,特别是“突变表”问题。大卫88,你可以发布*** ***完整的***记录布局*** ***两张表吗? –