无法在mysql中声明处理程序

7uzetpgm  于 2021-06-15  发布在  Mysql
关注(0)|答案(0)|浏览(210)

我在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,因为第一个insert的first属性太大,所以它会抛出一个异常,但是当我注解它时,表仍然是空的,在这种情况下,其他4个insert应该可以工作。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题