SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 23.05.2014 17:29:28

Cheb
Завсегдатай
Зарегистрирован: 27.12.2013
Сообщений: 28

поля AUTO_INCREMENT

Создаем таблицу с автоинкрементным полем
добавляем данные, все хорошо.

При попытке добавить заведомо некорректное значение справедливо выдает ошибку, и почему-то увеличивает поле автоинкрементное.
Это можно увидеть , добавив снова нормальные значения.
Это нормально? Хотя это не важно, но как сделать, чтобы при добавлении некорректных значений поле не увеличивалось?

Обновить поле можно так

ALTER TABLE table1  AUTO_INCREMENT=1;

Неактивен

 

#2 23.05.2014 17:45:24

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: поля AUTO_INCREMENT

Вы не сможете гарантировать последовательность значений. Возможно, такое поведение связано с тем, что движок сначала резурвирует номер под новую запись, а потом выдает ошибку. Номер не возвращается в пул из требований транзакционности (если одновременно работала бы другая транзакция, она могла бы уже записать следующее значение).

Неактивен

 

#3 03.07.2014 23:21:32

eas0371@mail.ru
Участник
Откуда: Курск
Зарегистрирован: 03.07.2014
Сообщений: 5

Re: поля AUTO_INCREMENT

добрый день, вопрос на засыпку - почему не получается присвоить аuto_increment-у значение переменной?
т.е.  например вот так сработает:
alter table table1 auto_increment=5;
а вот так нет:
set @x=5;
alter table table1 auto_increment=@x; пишет "You have an error in your SQL syntax;.."

Неактивен

 

#4 03.07.2014 23:25:41

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: поля AUTO_INCREMENT

Не стоит присваивать auto_increment'у значение самим - этот аттрибут отдан на откуп СУБД.
А вообще такие запросы делаются динамическим sql - с помощью prepared statements.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#5 03.07.2014 23:30:16

eas0371@mail.ru
Участник
Откуда: Курск
Зарегистрирован: 03.07.2014
Сообщений: 5

Re: поля AUTO_INCREMENT

есть такая необходимость вручную устанавливать, т.к. на inno_db он сбрасывается.
проблемы с этим никакой нету, просто почему mysql упорно не хочет присваивать переменную - только константу.

Неактивен

 

#6 04.07.2014 03:04:50

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: поля AUTO_INCREMENT

Внутри ALTER TABLE использование переменных не предусмотрено. Используйте PREPARE как описано здесь
http://forums.mysql.com/read.php?98,752 … msg-192966

Неактивен

 

#7 07.07.2014 00:03:28

eas0371@mail.ru
Участник
Откуда: Курск
Зарегистрирован: 03.07.2014
Сообщений: 5

Re: поля AUTO_INCREMENT

спасибо получилось

Неактивен

 

Board footer

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