3 回答
TA贡献1993条经验 获得超5个赞
您可以使用ALTER TABLE更改auto_increment初始值:
ALTER TABLE tbl AUTO_INCREMENT = 5;
有关更多详细信息,请参阅MySQL参考。
TA贡献1811条经验 获得超5个赞
是的,您可以使用该ALTER TABLE t AUTO_INCREMENT = 42声明。但是,您需要注意这将导致重建整个表,至少使用InnoDB和某些MySQL版本。如果您已有一个包含数百万行的数据集,则可能需要很长时间才能完成。
根据我的经验,最好做以下事情:
BEGIN WORK;
-- You may also need to add other mandatory columns and values
INSERT INTO t (id) VALUES (42);
ROLLBACK;
这样,即使您回滚事务,MySQL也会保留自动增量值,并且会立即应用更改。
您可以通过发出SHOW CREATE TABLE t声明来验证这一点。你应该看到:
> SHOW CREATE TABLE t \G
*************************** 1. row ***************************
Table: t
Create Table: CREATE TABLE `t` (
...
) ENGINE=InnoDB AUTO_INCREMENT=43 ...
TA贡献1871条经验 获得超8个赞
如何在MySQL中从10开始自动递增1:
create table foobar(
id INT PRIMARY KEY AUTO_INCREMENT,
moobar VARCHAR(500)
);
ALTER TABLE foobar AUTO_INCREMENT=10;
INSERT INTO foobar(moobar) values ("abc");
INSERT INTO foobar(moobar) values ("def");
INSERT INTO foobar(moobar) values ("xyz");
select * from foobar;
'10', 'abc'
'11', 'def'
'12', 'xyz'
此自动将id列从10开始递增1。
MySQL中的自动增量为5,从10开始:
drop table foobar
create table foobar(
id INT PRIMARY KEY AUTO_INCREMENT,
moobar VARCHAR(500)
);
SET @@auto_increment_increment=5;
ALTER TABLE foobar AUTO_INCREMENT=10;
INSERT INTO foobar(moobar) values ("abc");
INSERT INTO foobar(moobar) values ("def");
INSERT INTO foobar(moobar) values ("xyz");
select * from foobar;
'11', 'abc'
'16', 'def'
'21', 'xyz'
此自动每次将id列增加5,从10开始。
添加回答
举报