我创建了一个mysql函数,这个函数有时会抛出锁定超时异常。我想处理这个异常,这是我的函数
DELIMITER //
DROP FUNCTION IF EXISTS getNextNumber;
DELIMITER //
CREATE FUNCTION getNextNumber(key1 VARCHAR(20)) RETURNS INTEGER DETERMINISTIC READS SQL DATA
BEGIN
DECLARE number INTEGER;
DECLARE query_timeout INT DEFAULT FALSE;
DECLARE CONTINUE HANDLER FOR 1205 SET query_timeout = TRUE;
-- Error: 1205 SQLSTATE: HY000 (ER_LOCK_WAIT_TIMEOUT)
select NUMBER into number FROM NUMBER_TABLE WHERE NUMBER_KEY = key1 FOR UPDATE;
IF query_timeout = TRUE THEN
RETURN -1;
ELSE
RETURN (number+1);
END IF;
END//
DELIMITER ;
我正在使用FOR UPDATE它锁定该表,所以如果有锁定超时错误,那么我想返回-1 else +1