2010-08-13 49 views
0

我有一个名为IntQID的字段,它是记录在SQL数据库中的每个帖子的ID。如果一个帖子是1533,下一个entery将是1534,1535等...如何更改SQL位的计数器位置

我最近搞砸了,并插入了一个ID为4000的手动条目。现在计数器一直使用它作为最后一个条目,所以现在新贴的是4001,4002,4003.

如何更改计数器返回到1533之后的下一行?

希望这是有道理的。谢谢!

+0

如果你这样做,难道你在将来的某个时候不会冒着与4000相撞的风险吗?在序列中没有空位(是对于某些事物有意义的序列,还是仅仅是一个标识符)真的非常重要吗? – FrustratedWithFormsDesigner 2010-08-13 18:25:17

+0

你如何更新值 - 这是由'UPDATE'语句,还是这是一个auto_increment列?你是否要求重置所有的值来纠正序列? – 2010-08-13 18:25:25

+0

没有4000了,我已经更新了所有值... OMG - 这是一个auto_increment列。我更新了不符合顺序的值,但现在任何时候网站上的帖子都是插入者,它从4000的范围开始计算,而不是现有的1000范围,我喜欢它 – BigMike 2010-08-13 18:31:26

回答

3

要AUTO_INCREMENT的值设置为1533,使用方法:

ALTER TABLE tbl AUTO_INCREMENT = 1533; 

据我所知,你不能在不使用两个查询最小的ALTER TABLE陈述,它获得现有的最高值。

+0

那么,我会改变整个桌子,而不只是一个特定的领域?我的表名是tblQA,并且该字段是IntQID,因此ALTER TABLE tblQA AUTO_INCREMENT = 1533? – BigMike 2010-08-13 18:37:53

+0

@BigMike:这只影响auto_increment字段 - 不管列名是什么,因为MySQL只允许每个表有一个auto_increment列。 – 2010-08-13 18:38:55

+0

完美 - 作品!感谢大家 – BigMike 2010-08-13 18:43:00

1

ALTER TABLE tbl AUTO_INCREMENT = 1000;

+0

+1:这是有效的,设置auto_increment值是任意的。对我而言,无论如何... – 2010-08-13 18:38:08