在脚本mysql中重置自动增量列值
Posted
技术标签:
【中文标题】在脚本mysql中重置自动增量列值【英文标题】:Reset auto increment column value in script mysql 【发布时间】:2011-02-18 20:17:24 【问题描述】:我有两个 mysql 表,一个需要以另一个表中最后插入行的最后一个值(加 1)开始其自动增量列 id。
根据 mysql 手册,您可以像这样重新启动自动增量列的值:
mysql> ALTER TABLE tbl AUTO_INCREMENT = 100;但是,这是不可能的:
mysql> ALTER TABLE tb2 AUTO_INCREMENT = (SELECT MAX(id) FROM tbl1);我需要执行类似的操作,因为我正在使用脚本填充表格。还有其他方法可以实现吗?
【问题讨论】:
需要操纵 auto_increment 索引通常是设计缺陷的症状。为什么表的id需要这样关联? 不要认为 SELECT 语句在这种情况下有效。您总是可以先从 tbl1 查询它。默认情况下,自动增量设置为该表中的最新条目。所以要小心,不要用那些 tbl1 覆盖 tbl2 中的值——它们可能已经存在于 tbl2 中。如果您需要它们相同,请不要完全使用自动增量,只需将 tbl2 中的 id 更新为 tbl1 中的 id。 两个表都与第三个表相关,该表将在未来生成它们的行的 id。因为我必须使用脚本迁移数据,所以我更容易填写一张表,然后填写第二张表,然后填写生成器表,然后创建外键。 【参考方案1】:创建一个虚拟记录和增量怎么样?
-- insert dummy forcing id
INSERT INTO 'tb2' (ID, NAME, ...)
VALUES (SELECT MAX(id) FROM tb1, "dummy", ...);
-- automagically increment to last id + 1
ALTER TABLE `tb2' AUTO_INCREMENT = 1; -- only myISAM
-- delete dummy
DELETE FROM 'tb2' WHERE NAME="dummy";
【讨论】:
【参考方案2】:它正在使用这个脚本
ALTER TABLE `people` AUTO_INCREMENT =1
其中 people 是我的表,或者您可以通过 GUI 执行此操作(选择当前表的 phpmyadmin 的操作选项卡)
【讨论】:
SLim 的答案有效,如果它不能设置为 1,它只会设置为 OP 所追求的最低可能值。【参考方案3】:我认为您正在尝试将自动增量列用于不太适合的内容。如果您关心插入的确切值,那么它不应该是自动递增的。
【讨论】:
以上是关于在脚本mysql中重置自动增量列值的主要内容,如果未能解决你的问题,请参考以下文章