2016-02-01 4 views
1

У меня есть этот запрос, чтобы выбрать те строки, которые будут AUTOINCREMENT колонки 'invoice_no'автоинкрементация Colum с существующим значением из выбранных строк

SELECT *FROM oc_order WHERE order_status_id >= 0 
GROUP BY order_id; 

Строка с ORDER_ID # тысяча двести семьдесят шесть имеет 'invoice_no 'значения 222

Я хотел бы автоинкремент, так что следующий выбранный ряд id WHERE order_status_id >= 0 будет иметь 'invoice_no' значение 223 и так далее ...

ответ

0

В MySQL существует только один масштабируемый и надежный способ сделать это. Это с таблицей invoice, содержащей автоинкрементный столбец под названием invoice_no. Когда вам нужно новое значение уникального invoice_no, сделать это:

INSERT INTO invoice (col, col) VALUES (whatever, whatelse) 
SET @new_invoice_no := LAST_INSERT_ID() 
UPDATE oc_order SET invoice_no = @new_invoice_no (or whatever) 

Если вы попытаетесь сделать это с SELECT MAX(invoice_no) или подобными, вы начнете получать много повторяющихся значения, когда база данных получают заняты.

Рецензия на эту тему. http://www.plumislandmedia.net/mysql/unique-numbers-oracle-mysql/

Смежные вопросы