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