Вставьте и установите значение с max () + 1 задач - PullRequest
37 голосов
/ 19 марта 2011

Я пытаюсь вставить новую строку и установить customer_id с max () + 1.Причиной этого является то, что в таблице уже есть auto_increatment для другого столбца с именем id, и в таблице будет несколько строк с одинаковым идентификатором customer_id.

При этом:

INSERT INTO customers
  ( customer_id, firstname, surname )
VALUES 
  ((SELECT MAX( customer_id ) FROM customers) +1, 'jim', 'sock')

... Iпостоянно получаю следующую ошибку:

#1093 - You can't specify target table 'customers' for update in FROM clause

Кроме того, как бы я мог остановить одновременное добавление двух разных клиентов без одинакового идентификатора customer_id?

Ответы [ 11 ]

0 голосов
/ 08 ноября 2016

Мы объявляем переменную 'a'

SET **@a** = (SELECT MAX( customer_id ) FROM customers) +1;

INSERT INTO customers
  ( customer_id, firstname, surname )
VALUES 
  (**@a**, 'jim', 'sock')
...