SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...

てるてる動画

【MySQL】InnoDBのテーブルでAUTO_INCREMENTの連番が飛ぶ

問題


InnoDBinsert into T select * from XXX SQLAUTO_INCREMENT

1,2,3,4,5,6,7,8,9,10 1016



mysql




insert231
/* AUTO_INCREMENTのカラムを持つテーブルを作成 */
create table T (
    id int primary key auto_increment,
    code varchar(10) not null
) engine=InnoDB;

/* insert select をする. code 'a' と 'b' の行を追加する. */
insert into T (code)
select 'a'
union
select 'b';

/* AUTO_INCREMENTの値を確認する. 次は4. つまり1,2,3は消費された. */
show table status like 'T';
+------+--------+---------+------------+--------+ ~ 略 ~ +----------------+ ~ 略
| Name | Engine | Version | Row_format | Rows   | ~ 略 ~ | Auto_increment | ~ 略
+------+--------+---------+------------+--------+ ~ 略 ~ +----------------+ ~ 略
| T    | InnoDB |      10 | Compact    |      2 | ~ 略 ~ |              4 | ~ 略
+------+--------+---------+------------+--------+ ~ 略 ~ +----------------+ ~ 略

InnoDB

innodb_autoinc_lock_modeinnodb_autoinc_lock_mode=1 

innodb_autoinc_lock_mode=0 



http://dev.mysql.com/doc/refman/5.1-olh/ja/innodb-auto-increment-configurable.html

http://dev.mysql.com/doc/refman/5.1/en/innodb-parameters.html#sysvar_innodb_autoinc_lock_mode

関連するメモ

コメント