oinume journal

Scratchpad of what I learned

MySQLでbulk insertの途中でエラーになった場合の挙動

MySQL

 

insert into ... values (1, 'x'), (2, 'y');

 

のようにbulk insertした時に、途中でエラーになった場合にどういう挙動をするかを調べてみた。普通に考えれば「全てのレコードがinsertされてない」になるはずだと思ったんだけど一応。試したMySQLのバージョンは5.5.28。

 

結果からいうと想定通りで、「途中でエラーが起こると全てのレコードがinsertされてない」になった。

 

 

CREATE TABLE `t1` (

`id` int(11) NOT NULL DEFAULT '0',

`value` varchar(255) NOT NULL DEFAULT '',

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8

 

mysql> insert into t1 (id, value) values (0, '0'), (0, '1');

ERROR 1062 (23000): Duplicate entry '0' for key 'PRIMARY'

 

mysql> select * from t1;

Empty set (0.00 sec)

 

 

[tmkm-amazon]4873115868[/tmkm-amazon]