9

我正在使用 mysql v5.1.48 和红色http://dev.mysql.com/doc/refman/5.5/en/signal.html。但是代码

DELIMITER $$
CREATE PROCEDURE `CoreRaiseError`()
BEGIN
  SIGNAL SQLSTATE '45000'
      SET MESSAGE_TEXT = 'An error occurred', MYSQL_ERRNO = 1001;
END$$

提出一个

SQL 错误 1064:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在“SQLSTATE '45000' 附近使用的正确语法”

SIGNAL 从哪个版本开始成为关键字?如何使用以前版本的 mysql 引发异常?

谢谢你。

4

1 回答 1

12

如MySQL 5.1 版手册中所述:

其他与条件相关的语句是SIGNALRESIGNALGET DIAGNOSTICSSIGNAL直到 MySQL 5.5 才支持andRESIGNAL语句。GET DIAGNOSTICSMySQL 5.6 之前不支持该语句。

要在旧版本的 MySQL 中引发错误,只需故意发出错误的命令。我经常CALL一个不存在的程序,例如:

CALL raise_error;
于 2012-05-16T11:07:08.953 回答