我试图在触发器上有条件地更改值,但出现错误。

我的触发条件是:


CREATE TRIGGER `defineBase` BEFORE INSERT ON `perguntas`
FOR EACH ROW
BEGIN
    IF NEW.per_base = 0 THEN
        SET NEW.per_base = (SELECT per_id FROM perguntas ORDER BY per_id DESC LIMIT 1) + 1;
    END IF;
END;


但不起作用。

最佳答案

您需要将定界符更改为;以外的其他内容。否则,触发器定义将在第一个;处停止

delimiter |
CREATE TRIGGER `defineBase` BEFORE INSERT ON `perguntas`
FOR EACH ROW
BEGIN
    IF NEW.per_base = 0 THEN
        SET NEW.per_base = (SELECT per_id FROM perguntas ORDER BY per_id DESC LIMIT 1) + 1;
    END IF;
END
|
delimiter ;

10-01 12:18