Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запись в поле его максимального значение 
:(
    Опции темы
=Женек=
Дата 1.12.2013, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 20.2.2005

Репутация: нет
Всего: 1



Господа, хочу что-то вроде этого
Код

INSERT INTO tempPOINTS (id) VALUES (MAX (id)+1)


То есть, одним запросом, определить максимальное значение поля id и вставить строку со значением id на единицу больше.
То есть, что-то вроде автоинкремента. Но автоинкремент по ряду причин ставить не хочется.
PM MAIL   Вверх
=Женек=
Дата 1.12.2013, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 20.2.2005

Репутация: нет
Всего: 1



Вот так попробовал - не получается
Код

INSERT INTO tempPOINTS (id) VALUES (SELECT MAX (id) FROM tempPOINTS)


Добавлено через 1 минуту и 57 секунд
Вот шайтан... добавил еще скобок - получилось
Код

INSERT INTO tempPOINTS (id) VALUES ((SELECT MAX (id) FROM tempPOINTS))

PM MAIL   Вверх
Fortop
Дата 2.12.2013, 02:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 4
Всего: 42



Цитата(=Женек= @  1.12.2013,  20:07 Найти цитируемый пост)
То есть, что-то вроде автоинкремента. Но автоинкремент по ряду причин ставить не хочется. 

А можно узнать сии гениальные причины?


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
=Женек=
Дата 2.12.2013, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 548
Регистрация: 20.2.2005

Репутация: нет
Всего: 1



Причина проста - если ставить автоинкремент, то если я создам 10 записей, потому 10-ю удалю, следующая будет пронумерована как 11-я. А мне это не надо.
PM MAIL   Вверх
Akina
Дата 2.12.2013, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Цитата(=Женек= @  2.12.2013,  20:35 Найти цитируемый пост)
если я создам 10 записей, потому 10-ю удалю, следующая будет пронумерована как 11-я

Это - ПРАВИЛЬНО. Если речь идёт о синтетическом ключе-счётчике. 
А вот если это просто поле-нумератор, не ключевое - то ради бога, вставляй что надо...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Zloxa
Дата 2.12.2013, 20:02 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 33
Всего: 161



Цитата(=Женек= @  2.12.2013,  20:35 Найти цитируемый пост)
Причина проста - если ставить автоинкремент, то если я создам 10 записей, потому 10-ю удалю, следующая будет пронумерована как 11-я.

Если так, вероятно ты используешь InnoDB. А там, на сколько я могу судить, вполне может случиться ситуация, что при таком подходе ты в конце концов внезапно обнаружишь что у тебя каким-то волшебным образом оказалось вставлено две десятых записи. Ибо Consistent Nonlocking Reads, а innodb_locks_unsafe_for_binlog по дефолту off

Это сообщение отредактировал(а) Zloxa - 2.12.2013, 20:17


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0488 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.