Невозможно объявить обработчики в MYSQL - PullRequest
0 голосов
/ 07 января 2019

У меня есть небольшой скрипт в моем populate.sql, который должен откатывать все вставки в случае неудачи. Однако я не в состоянии выполнить populate.sql через «source 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, поскольку первый атрибут первой вставки слишком велик, поэтому он выдаст исключение, однако, когда я комментирую его, таблица остается пустой, в этом случае остальные 4 вставки должны работать.

...