Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   вопрос по mysql (https://javascript.ru/forum/server/22702-vopros-po-mysql.html)

bushstas 29.10.2011 17:34

вопрос по mysql
 
ребята подскажите (если такое возможно конечно)
нужно у любой позиции таблицы поле id (с AUTO_INCREMENT) изменить на значение которое должно идти следующим (то есть на значение показателя AUTO_INCREMENT)
по сути сделать позицию таблицы последней

я а то сначала выясняю последний id и потом только изменяю а это два запроса, можно ли сделать одним???

Gvozd 29.10.2011 23:12

так делать незачем.
Если вам понадобилось так сделать, то вы что-то делаете неправильно.
Расскажите более подробно о вашей ситуации, и мы расскажем что вы делаете неправильно

Gozar 29.10.2011 23:52

bushstas,
Одним запросом, сделать это нельзя. Т.к. тебе в любом случае придется сначала выяснить значение последнего поля. А вообще, как уже подметил Gvozd, это идиотизм менять вручную AUTO_INCREMENT, он придуман для того чтобы его не меняли вручную.

ps: Если быть более точным, то одним запросом тебе не даст сделать это сама MySQL, так как одновременно нельзя выполнить UPDATE с подзапросом SELECT на одной таблице. (doc)

bushstas 30.10.2011 12:00

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

да понятно незачем id трогать нужно просто исходить в выборке из времени-даты
еще возможно могут возникать конфликты пока у одного пользователя сервер выясняет следующий id для другого пользователя сервер вставил новую позицию то есть получится конфликт одинаковых id, возможно ли такое?

еще вопрос: для timestamp поля как вставлять данные? с помощью NOW() или date('Y-m-d H:i:s')???

Gozar 30.10.2011 13:29

Цитата:

Сообщение от bushstas (Сообщение 133524)
еще вопрос: для timestamp поля как вставлять данные? с помощью NOW() или date('Y-m-d H:i:s')???

тип поля задай CURRENT_TIMESTAMP и не нужно будет выбирать между NOW() и date(...). ;)

ps: почитай про блокировки строк и таблиц

bushstas 30.10.2011 16:45

спасибо за ответ
то есть если использовать скажем INSERT DELAYED вместо INSERT конфликта можно избежать? или на что конкретно обратить внимание?


))) у меня нет типа полей CURRENT_TIMESTAMP
Mysql Version information: 3.2.3
воозможно следует обновить denwer

ставлю просто TIMESTAMP по умолчанию пишет что CURRENT_TIMESTAMP

Gozar 30.10.2011 16:56

Цитата:

Сообщение от bushstas (Сообщение 133556)
воозможно следует обновить denwer

Даже не знаю стоит ли, v3 вышла 10 лет назад, текущая v5.5. Может стоит снести нафиг денвер и поставить всё самостоятельно.

dmitriymar 30.10.2011 19:49

Цитата:

Сообщение от Gozar
Даже не знаю стоит ли, v3 вышла 10 лет назад, текущая v5.5. Может стоит снести нафиг денвер и поставить всё самостоятельно.

или как вариант поставить свежий денвер:)

Gozar 30.10.2011 21:45

dmitriymar,
Если ты заказчик или ну совсем начинающий, то да, вариант хорош. Я предпочитаю точно знать что у меня в системе установлено, как настроено и за что отвечает и где копать если "вдруг".

Собственно вопросы этой темы пришли от незнания предмета с которым работает человек. Установка системы самостоятельно первый шаг к пониманию работы всех её компонентов.

Shaci 31.10.2011 19:22

Цитата:

Сообщение от dmitriymar (Сообщение 133578)
или как вариант поставить свежий денвер:)

xampp лучше ставить


Часовой пояс GMT +3, время: 03:40.