2010-05-12 36 views
1

我有两个mysql表,需要用另一个表中最后一个插入行的最后一个值(加1)来启动自动增量列标识。在脚本mysql中重置自动增量列值

根据MySQL手册,你可以重新启动一个自动递增列的这样的值:

 
mysql> ALTER TABLE tbl AUTO_INCREMENT = 100; 

但是,这是不可能的:

 
mysql> ALTER TABLE tb2 AUTO_INCREMENT = (SELECT MAX(id) FROM tbl1); 

我需要这样,因为执行的东西我正在使用脚本填充表格。有另一种方法来实现它吗?

+1

需要操纵auto_increment指数通常是设计缺陷的症状。为什么表格的ID需要以这种方式关联? – 2010-05-12 21:00:54

+0

不要认为SELECT语句适用于这种情况。你总是可以首先从tbl1查询它。默认情况下,自动增量设置为该表中的最新条目。所以要小心,不要用tbl1覆盖tbl2中的值 - 它们可能已经存在于tbl2中。如果您需要它们相同,请不要使用自动增量,而只需使用tbl1中的id更新tbl2中的id。 – Alec 2010-05-12 21:05:07

+0

这两个表都与第三个表格有关,它们将来会生成其行的ID。由于我必须使用脚本迁移数据,所以填充一张表格,然后填充第二个表格,然后填充生成器表格,然后创建外键。 – Lucia 2010-05-12 21:08:59

回答

2

我认为你正在尝试使用自动增量列来表示它不太适合的东西。如果你关心插入的确切值,那么它不应该是自动递增的。

0

它使用这个脚本

ALTER TABLE `people` AUTO_INCREMENT =1 

那里的人是我的表,或者您也可以通过GUI

+1

SLim的答案有效,如果它不能设置为1,它只会设置OP的最低可能值。 – 2012-12-19 16:20:22

0

有关创建一个虚拟的记录什么,(有选择当前表的phpmyadmin的操作选项卡)做到这一点增量?

-- 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";