在生产中设置自动增量时出错


CREATE DEFINER = 'root'@'localhost'
PROCEDURE client_logging_system.Proc_client_Delete(IN in_clientID int)
COMMENT '
-- Parameter:
-- in_clientID: ID of client
'
BEGIN
DECLARE exit handler for sqlexception
BEGIN
ROLLBACK;
end;

START TRANSACTION;

DELETE FROM `client` WHERE `client`.ID = in_clientID;
ALTER TABLE `client` AUTO_INCREMENT = in_clientID;

COMMIT;
END

My procedure get error on line:

ALTER TABLE `client` AUTO_INCREMENT = in_clientID;
对于这个问题有什么建议吗?

你不能在ALTER语句中使用变量,它需要一个文字数字。您需要使用PREPARE创建动态SQL。

SET @st = CONCAT('ALTER TABLE `client` AUTO_INCREMENT = ', in_clientID);
PREPARE stmt FROM @st;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

您只能在例程中使用有限的DDL语句集。

你想用ALTER TABLE-statement达到什么目的?如果删除的客户端id不是最大的,那么ALTER TABLE就没有意义了。

最新更新