Как вызвать ошибку в функции MySQL
На самом деле это комбинация exception-handling всех трех ответов. Вы вызываете mysqlclient несуществующую процедуру, чтобы mysqldump вызвать ошибку, а затем объявляете mysql обработчик выхода, который mysqlclient перехватывает сгенерированную mysqldump вами ошибку. Вот пример использования mysqldump SQLSTATE 42000 (процедура exceptions не существует) для выдачи exception ошибки перед удалением, если functions для удаляемой строки установлен mysql-query идентификатор внешнего ключа:
DROP PROCEDURE IF EXISTS decount_test;
DELIMITER //
CREATE DEFINER = 'root'@'localhost' PROCEDURE decount_test ( p_id bigint )
DETERMINISTIC MODIFIES SQL DATA
BEGIN
DECLARE EXIT HANDLER FOR SQLSTATE '42000'
SELECT 'Invoiced barcodes may not have accounting removed.';
IF (SELECT invoice_id
FROM accounted_barcodes
WHERE id = p_id
) THEN
CALL raise_error;
END IF;
DELETE FROM accounted_barcodes WHERE id = p_id;
END //
DELIMITER ;
Вывод:
call decount_test(123456);
+----------------------------------------------------+
| Invoiced barcodes may not have accounting removed. |
+----------------------------------------------------+
| Invoiced barcodes may not have accounting removed. |
+----------------------------------------------------+
mysql
function
exception
stored-procedures
Как вызвать ошибку в функции MySQL
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.