使用纯MySQL查询
因为我在这里找不到我想要的东西,所以我从各种答案中拼凑出答案并在这里分享。
有几点需要注意:
有问题的表是InnoDB
表使用字段
id
类型为
int
作为主键
在MySQL中实现这一点的唯一方法是使用存储过程
下面的图片是使用SequelPro作为GUI的。您应该能够根据您首选的MySQL编辑器调整它
我已经在MySQL上测试过了
版本14.14发行版5.5.61,用于debian linux gnu
步骤1:创建存储过程
创建如下存储过程:
DELIMITER //
CREATE PROCEDURE reset_autoincrement(IN tablename varchar(200))
BEGIN
SET @get_next_inc = CONCAT('SELECT @next_inc := max(id) + 1 FROM ',tablename,';');
PREPARE stmt FROM @get_next_inc;
EXECUTE stmt;
SELECT @next_inc AS result;
DEALLOCATE PREPARE stmt;
set @alter_statement = concat('ALTER TABLE ', tablename, ' AUTO_INCREMENT = ', @next_inc, ';');
PREPARE stmt FROM @alter_statement;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END //
DELIMITER ;
然后运行它。
运行时,只需选择存储过程并按run Selection
运行之后,我应该看到存储过程
步骤2:调用存储过程
这次您可以简单地使用普通的MySQL查询。
call reset_autoincrement('products');