当我的 TRIGGER 触发时,数据库行不会更新。 -- "#1242 - 子查询 returns 多于 1 行"

Database row wont update when my TRIGGER fires. -- "#1242 - Subquery returns more than 1 row"

我想在 table 'a' 中的列更新时在 table 'b' 中插入新行。但是当触发器以 UPDATE REQ SET status='approved' WHERE idReq=1; 触发时,它会抛出一条错误消息:

"#1242 - Subquery returns more than 1 row"

注意:我正在使用 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 ;

我阅读您的代码的假设是,您的第一条语句试图获取整个 REQ table 中的每个 idReq 并将其粘贴到 @idReq 变量中,因此出现错误。

您稍后已经在使用 OLD 和 NEW,因此您了解这些概念。我什至会尝试不使用变量,而只在 INSERT 块中使用 NEW.idReq 和 NEW.petitioner。

(我没有使用过 mariadb,所以我的回答是基于一般的 sql 知识和快速的互联网搜索。)