无法在MYSQL中声明处理程序

时间:2019-01-07 04:23:38

标签: mysql handler

我的populate.sql中有这个小脚本,如果有任何失败,应该回滚所有插入。但是即时通讯无法通过“ source populate.sql”执行populate.sql,原因是它说我的处理程序存在语法错误,但是我已经检查过mysql 5.7文档,并且一切似乎都很好。我在做什么错了?

DELIMITER $$
CREATE PROCEDURE foo()
BEGIN

    DECLARE rollbacka BOOL DEFAULT 0;
    DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET rollbacka = 1;

    START TRANSACTION;
    insert into obra values('101-903aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa','101-903.jpeg');
    insert into obra values('101-904','101-904.jpeg');
    insert into obra values('101-905','101-905.jpeg');
    insert into obra values('101-906','101-906.jpeg');
    insert into obra values('101-907','101-907.jpeg');

    IF rollbacka THEN
        ROLLBACK;
    ELSE
        COMMIT;
    END IF;

END $$
DELIMITER ;


select * from museu.obra;

[更新]我正在测试以下内容。它不应该更新表obras,因为第一个插入的first属性太大,因此它将引发异常,但是当我对其进行注释时,表仍然为空,在这种情况下,其他4个插入应该可以工作。

0 个答案:

没有答案