В таблице одно поле - auto_increment - как делать INSERT?

Статус
В этой теме нельзя размещать новые ответы.
В таблице одно поле - auto_increment - как делать INSERT?

Есть таблица, в которой содержатся только номера заказов, которые определяются полем первичного ключа.

Для определения номера следующего заказа выводится максимальное значение первичного ключа. Добавляется единица.
Как потом составить запрос INSERT, чтобы в эту таблицу был вставлен новый номер заказа=следующий auto_increment.

Вроде просто. Но клинит. Не пойму, как составить простейший запрос-(
 
Переменная, содержащая заказ (id+1) уже есть.
Надо ее вставить в поле первичного ключа.

Узнав последнее значение первичного ключа, работаю с ним. Задаю переменную нового заказа.
Скажем, $x.
Как вставить этот $x следующим значением ключа в таблицу с одним столбцом?

Как выглядеть запрос будет?

'INSERT 'order_nums` (order_num_id) VALUES ('.??????????????.')';
 

Фанат

oncle terrible
Команда форума
с какой стати ты пихаешь в auto_increment поле какое-то значение?!
 
Ф-а-н-а-т. Получаю последнее значение из auto_increment. Добавляю единицу. Потом как вставить новое значение переменной в первичный ключ.

Вопрос, потому что, если другой клиент в то же время сделает заказ, то простое добавление нового значение этого ключа может привести к проблемам.

В общем, неправильна сама идея задавать номер заказа по первичному ключу. Лучше сделать второе поле order_num и работать по нему...
 

Фанат

oncle terrible
Команда форума
НАХРЕНА ты добавляешь единицу?
получил значение - и пользуйся!
 
Единица, чтобы задать номер нового заказа (составной, не только следующим значением auto-inc обеспечено).

Плиз. Можешь ответить на конкр. вопрос. Как писать запрос, чтобы вставить переменную в следующее значение ключа.

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

Тогда скажи, что так не делается. Надо ставить второй столбец. Иначе проблемы.
 

kruglov

Новичок
CREATE TABLE `table` (
`id` int(11) NOT NULL auto_increment,
PRIMARY KEY (`id`)
);

insert into `table` set id=0

-~{}~ 22.11.07 00:40:

p.s. определил сам путем экспериментов, получилось с третьего раза, затрачено чисто на эксперименты полминуты. А тут целое бла-бла.
 

Фанат

oncle terrible
Команда форума
kruglov
да у него проблема не со вставкой вроде.
а классическая - с тем, чтобы сначала вставить, получить айди и пользоваться. до него не доходит, что можно сделать так.
ему обязательно сначала узнать, поптом попользоваться, а потом вставить
 

akond

Новичок
Эдуард, а что если подойти к решению вашей проблемы с другой стороны. Что если не в текущий заказ А вставлять ид несуществующего нового заказа Б, а наоборот, в старый заказ А вставлять ид уже созданного нового заказа Б?
 
Вы все правы. Я же писал, что заклинило меня поздно вечером.

Сначала вставляю следующий id, а потом получаю его и делаю номером заказа.

Спасибо и пардон -(
 

TutanXamoN

Новичок
Сначала вставляю следующий id, а потом получаю его и делаю номером заказа.
мб я не и не прав но почему-то при наличие авто-инкримента я всегда делал просто вставку и при НЕОБХОДИМОСТИ (например адрес доставки для заказа в отдельной таблице) использовал уже имеющуюся связку id<->order.

ЗЫ зачем делать средствами ПХП+МуСкл то что уже реализовано в МуСкл, причём не имея гарантий стабильности собственной (как правило ненужной) реализации?
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху