вопрос по mysql
ребята подскажите (если такое возможно конечно)
нужно у любой позиции таблицы поле id (с AUTO_INCREMENT) изменить на значение которое должно идти следующим (то есть на значение показателя AUTO_INCREMENT) по сути сделать позицию таблицы последней я а то сначала выясняю последний id и потом только изменяю а это два запроса, можно ли сделать одним??? |
так делать незачем.
Если вам понадобилось так сделать, то вы что-то делаете неправильно. Расскажите более подробно о вашей ситуации, и мы расскажем что вы делаете неправильно |
bushstas,
Одним запросом, сделать это нельзя. Т.к. тебе в любом случае придется сначала выяснить значение последнего поля. А вообще, как уже подметил Gvozd, это идиотизм менять вручную AUTO_INCREMENT, он придуман для того чтобы его не меняли вручную. ps: Если быть более точным, то одним запросом тебе не даст сделать это сама MySQL, так как одновременно нельзя выполнить UPDATE с подзапросом SELECT на одной таблице. (doc) |
да наверное делаю неправильно, тогда следует переделать таблицу. В таблице содержаться посетители, имеются поля с датой и временем(отдельно), зашел посетитель обновились дата и время (если посетитель с таким user_id уже записан, если нет просто вставляем), я так понимаю мне нужно сделать вместо даты и времени timestamp (одно поле)чтобы выборку делать по timestamp поскольку мне нужно выбирать из таблицы по порядку с самых последних, а изменять id мне нужно было чтобы как раз посетитель поднмался на самый верх выборки то есть становился последним с наибольшим id
спасибо за ответы, теперь ясно что одним запросом невозможно да понятно незачем id трогать нужно просто исходить в выборке из времени-даты еще возможно могут возникать конфликты пока у одного пользователя сервер выясняет следующий id для другого пользователя сервер вставил новую позицию то есть получится конфликт одинаковых id, возможно ли такое? еще вопрос: для timestamp поля как вставлять данные? с помощью NOW() или date('Y-m-d H:i:s')??? |
Цитата:
ps: почитай про блокировки строк и таблиц |
спасибо за ответ
то есть если использовать скажем INSERT DELAYED вместо INSERT конфликта можно избежать? или на что конкретно обратить внимание? ))) у меня нет типа полей CURRENT_TIMESTAMP Mysql Version information: 3.2.3 воозможно следует обновить denwer ставлю просто TIMESTAMP по умолчанию пишет что CURRENT_TIMESTAMP |
Цитата:
|
Цитата:
|
dmitriymar,
Если ты заказчик или ну совсем начинающий, то да, вариант хорош. Я предпочитаю точно знать что у меня в системе установлено, как настроено и за что отвечает и где копать если "вдруг". Собственно вопросы этой темы пришли от незнания предмета с которым работает человек. Установка системы самостоятельно первый шаг к пониманию работы всех её компонентов. |
Цитата:
|
Часовой пояс GMT +3, время: 03:40. |