MySQL 8.4 Release Notes
15.6.8 条件处理限制
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;