SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 09.04.2008 18:39:21

Сугубый
Участник
Зарегистрирован: 06.11.2007
Сообщений: 7

Блочный инсерт - всегда ли вставятся все записи?

Вопрос простой: есть у нас блочный инсерт типа
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
и хотим мы вставить 1000 строк. (MySQL 5.x, таблицы типа MyISAM или MEMORY)

А места на диске / в памяти хватает только на 300, к примеру. Что произойдёт?

Для InnoDB хочется верить, что он откатит транзакцию... А для MyISAM или MEMORY  - вставит только 300 и выкинет эксепшон? Или вернет кучу варнингов?
(см http://dev.mysql.com/doc/refman/5.0/en/insert.html)

Неактивен

 

#2 09.04.2008 19:36:47

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Блочный инсерт - всегда ли вставятся все записи?

В идеале - вставит 300 и ответит ошибкой, совершенно верно. На практике - иногда
транзакция подвисает и завершается, когда вы добавите места или убьете процесс.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson