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,你可以發佈*** ***完整的***記錄佈局*** ***兩張表嗎? –