我正在为MySQL数据库编写PLSQL触发器。我试图声明变量。所以我在触发器中写了一个声明块。这是我的以下代码
CREATE TRIGGER leave_approve_trigger
AFTER UPDATE ON leave_status
FOR EACH ROW
DECLARE //Syntax error
current_id integer;
BEGIN
if NEW.status == 'APPROVED'
THEN
select id into current_id from leave_request_table;
insert into update_table values(current_id);
ENDIF;
END;
我得到的错误是mysql版本5.5.0的语法错误。我们可以实际声明变量吗?提前致谢
答案 0 :(得分:1)
MySQL的程序语法略有不同,你必须改变一些行:
以下是代码:
DELIMITER $$
CREATE TRIGGER leave_approve_trigger
AFTER UPDATE ON leave_status
FOR EACH ROW
BEGIN
DECLARE current_id int;
if NEW.`status` = 'APPROVED' THEN
select id into current_id from leave_request_table;
insert into update_table values(current_id);
END IF;
END$$
DELIMITER ;
答案 1 :(得分:1)
我认为MySQL版本会更像这样:
delimiter $$
CREATE TRIGGER leave_approve_trigger AFTER UPDATE ON leave_status
FOR EACH ROW
BEGIN
if NEW.status = 'APPROVED' THEN
insert into update_table
select id
from leave_request_table;
END IF;
END;
delimiter ;
顺便说一下,你不需要Oracle或MySQL中的变量。只需使用insert . . . select
。
我认为您还希望匹配leave_request_table
中的特定行,但您的触发器不会这样做。