當表'a'中的列更新時,我想在表'b'上插入一個新行。但是當觸發器觸發UPDATE REQ SET status='approved' WHERE idReq=1;它時會拋出一個錯誤:
“#1242 - 子查詢回傳多于 1 行”
注意:我正在使用 MariaDB :)
這是我的觸發器:
DELIMITER $$
CREATE TRIGGER asignarNotificacionReqEstatus
AFTER UPDATE ON REQ
FOR EACH ROW
BEGIN
SET @idReq = (SELECT idReq FROM REQ);
SET @idPetitioner = (SELECT petitioner FROM REQ);
IF OLD.status <> NEW.status THEN
INSERT INTO NOTIFICATION(dayTime, type, content)
VALUES (NOW(), 'requestAcepted',
CONCAT("{",
"'idReq' : '", @idReq, "', ",
"'petitioner' : '", @idPetitioner, "', ",
"}")
);
END IF;
END $$
DELIMITER ;
uj5u.com熱心網友回復:
我閱讀您的代碼的假設是,您的第一條陳述句試圖獲取整個 REQ 表中的每個 idReq 并將其粘貼到 @idReq 變數中,因此您得到了錯誤。
稍后您已經在使用 OLD 和 NEW,因此您了解這些概念。我什至會嘗試不使用變數,而只在 INSERT 塊中使用 NEW.idReq 和 NEW.petitioner。
(我沒有用過mariadb,所以我的回答是基于一般的sql知識和快速的互聯網搜索。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/422003.html
標籤:
