【发布时间】: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。因为我必须使用脚本迁移数据,所以我更容易填写一张表,然后填写第二张表,然后填写生成器表,然后创建外键。
标签: mysql auto-increment