3 回答

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊
您可以使用ALTER TABLE更改auto_increment初始值:
ALTER TABLE tbl AUTO_INCREMENT = 5;
有關(guān)更多詳細(xì)信息,請(qǐng)參閱MySQL參考。

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超5個(gè)贊
是的,您可以使用該ALTER TABLE t AUTO_INCREMENT = 42聲明。但是,您需要注意這將導(dǎo)致重建整個(gè)表,至少使用InnoDB和某些MySQL版本。如果您已有一個(gè)包含數(shù)百萬行的數(shù)據(jù)集,則可能需要很長時(shí)間才能完成。
根據(jù)我的經(jīng)驗(yàn),最好做以下事情:
BEGIN WORK;
-- You may also need to add other mandatory columns and values
INSERT INTO t (id) VALUES (42);
ROLLBACK;
這樣,即使您回滾事務(wù),MySQL也會(huì)保留自動(dòng)增量值,并且會(huì)立即應(yīng)用更改。
您可以通過發(fā)出SHOW CREATE TABLE t聲明來驗(yàn)證這一點(diǎn)。你應(yīng)該看到:
> SHOW CREATE TABLE t \G
*************************** 1. row ***************************
Table: t
Create Table: CREATE TABLE `t` (
...
) ENGINE=InnoDB AUTO_INCREMENT=43 ...

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個(gè)贊
如何在MySQL中從10開始自動(dòng)遞增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'
此自動(dòng)將id列從10開始遞增1。
MySQL中的自動(dòng)增量為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'
此自動(dòng)每次將id列增加5,從10開始。
添加回答
舉報(bào)