Задавайте вопросы, мы ответим
Вы не зашли.
Создаем таблицу с автоинкрементным полем
добавляем данные, все хорошо.
При попытке добавить заведомо некорректное значение справедливо выдает ошибку, и почему-то увеличивает поле автоинкрементное.
Это можно увидеть , добавив снова нормальные значения.
Это нормально? Хотя это не важно, но как сделать, чтобы при добавлении некорректных значений поле не увеличивалось?
Обновить поле можно так
Неактивен
Вы не сможете гарантировать последовательность значений. Возможно, такое поведение связано с тем, что движок сначала резурвирует номер под новую запись, а потом выдает ошибку. Номер не возвращается в пул из требований транзакционности (если одновременно работала бы другая транзакция, она могла бы уже записать следующее значение).
Неактивен
добрый день, вопрос на засыпку - почему не получается присвоить а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;.."
Неактивен
Не стоит присваивать auto_increment'у значение самим - этот аттрибут отдан на откуп СУБД.
А вообще такие запросы делаются динамическим sql - с помощью prepared statements.
Неактивен
есть такая необходимость вручную устанавливать, т.к. на inno_db он сбрасывается.
проблемы с этим никакой нету, просто почему mysql упорно не хочет присваивать переменную - только константу.
Неактивен
Внутри ALTER TABLE использование переменных не предусмотрено. Используйте PREPARE как описано здесь
http://forums.mysql.com/read.php?98,752 … msg-192966
Неактивен
спасибо получилось
Неактивен