Я пытаюсь предоставить пользователям уникальный случайный код, но без пропуска любого числа в диапазоне. Мой стол, как этоСтрока Oracle Update с минимальным значением
RandomCode | IsUsed | RNum
--------------------------
002 | Y | 1
004 | Y | 2
003 | NULL | 3
005 | Y | 4
001 | NULL | 5
Так что в следующий randomcode использовать должно быть 003, а затем 001. Проблема в том, пользователь может вернуть код и я должен дать это число до someonelse. В этом случае я устанавливаю значение IsUsed равным NULL.
Я попытался выбрать минимальное значение Rnum с столбцом IsUsed равным NULL. и затем обновлять таблицу. Но столкнувшись с состоянием гонки, и пользователи получили дубликат RandomCode.
Любая помощь
UPDATE TABLE SET IsUsed = n'y» WHERE IsUsed = NULL и RNum = MIN (RNUM) ВОЗВРАЩЕНИЕ
Вызывает ли база данных БЛОКИРОВКА? – n3xus
Почему бы вам не попробовать и загрузить тестовый запрос? Таким образом, ваши концепции станут понятнее, и вы узнаете много чего другого. Я комментирую это, это было бы неправильно для меня. :) – Rachcha
Спасибо за ваш комментарий rachcha. Но я думаю, что это вызывает проблему гонки. – n3xus