У меня есть запрос SQL, который выбирает серийный номер и затем сразу увеличивает порядковый номер. Проблема в том, что когда я запускаю оператор, select возвращает обновленный серийный номер после приращения. Я ожидаю, что он вернет серийный номер перед обновлением, а затем выполнит обновление и установит новый серийный номер.SELECT возвращает обновленное значение во время транзакции SELECT-UPDATE
Ниже SQL:
START TRANSACTION;
-- Let's get the current value
SELECT serial FROM boxLabelSerial FOR UPDATE;
-- Increment the counter
UPDATE boxLabelSerial SET serial = serial + 1;
COMMIT;
Спасибо.
Используйте 'identity'. Не заново изобретайте колесо. –
Хороший обзор этого можно найти на DBA SE http://dba.stackexchange.com/questions/46459/putting-a-select-statement-in-a-transaction – gabe3886