mysql 在prodceduce中设置自动增量时出错

toe95027  于 2022-12-28  发布在  Mysql
关注(0)|答案(2)|浏览(100)
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

我的程序在联机时出错:

ALTER TABLE `client` AUTO_INCREMENT = in_clientID;

对这个问题有什么建议吗?

afdcj2ne

afdcj2ne1#

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

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

ht4b089n2#

在例程中只能使用有限的DDL语句集。
如果你删除了一个ID不是最大的客户端,那么这个ALTER TABLE语句就没有意义了。

相关问题