【发布时间】:2013-09-22 09:45:00
【问题描述】:
我正在尝试rollback on an error, but still let the client receive the error。这实际上可能是不可能的,除非有办法在异常处理程序中访问错误。
可以从异常中“抛出”,即可以raise a signal:
CREATE PROCEDURE p ()
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
SIGNAL SQLSTATE VALUE '99999'
SET MESSAGE_TEXT = 'An error occurred';
END;
DROP TABLE no_such_table;
END;
但是这个来自 MySQL 文档的示例代码看起来可怕,因为它确实吞下了所有错误并将它们塞进了一个。
SHOW ERRORS 似乎相关,但我看不到任何以编程方式使用它的方法,例如SELECT Code FROM (SHOW ERRORS); 是不可能的。
这可能吗?有没有我完全错过的更好的做法?
【问题讨论】:
标签: mysql exception-handling signals