MySQL 8.4 发行说明
SIGNAL
、RESIGNAL
和 GET DIAGNOSTICS
不允许作为准备好的语句。例如,以下语句无效
PREPARE stmt1 FROM 'SIGNAL SQLSTATE "02000"';
SQLSTATE
值在 '04'
类中不会被特殊对待。它们与其他异常的处理方式相同。
在标准 SQL 中,第一个条件与先前 SQL 语句返回的 SQLSTATE
值相关。在 MySQL 中,这不能保证,因此要获取主要错误,您不能这样做
GET DIAGNOSTICS CONDITION 1 @errno = MYSQL_ERRNO;
相反,请执行以下操作
GET DIAGNOSTICS @cno = NUMBER;
GET DIAGNOSTICS CONDITION @cno @errno = MYSQL_ERRNO;