У таблиці, де кожен рядок має лічильник (просто ціле значення), мені потрібно отримати поточне значення та одночасно збільшити його .
Ефективно, я хочу це зробити:
SELECT counter FROM table WHERE id=123
UPDATE table SET counter=counter+1 WHERE id=123
Але робити це як два запити, очевидно, не є безпечним для потоків: кілька процесів, які роблять одну й ту саму річ (в одному рядку), можуть отримати одне лічильне значення. Мені потрібно, щоб вони були унікальними, тому кожен процес отримав би фактичне значення струму та збільшив його на одиницю.
Я можу придумати конструкцію, де я впроваджую ручний замок на ряд, але мені цікаво, чи існує простіший спосіб зробити це?