У меня есть таблица следующим образом
Таблица содержит пользователей моего приложения и хранит их клиентов. Столбец User Client ID относится к внешнему ключу, связанному с другой таблицей, в которой хранятся сведения о клиентах.
Мне нужен еще один столбец (Счетчик клиентов пользователя), который является просто счетчиком клиентов каждого пользователя. Мне нужно, чтобы он начинался с 1 и увеличивался для каждого отдельного пользователя приложения.
На данный момент я заполняю это, подсчитывая количество клиентов для каждого пользователя + 1, прежде чем вставлять новую строку в таблицу:
select count(*) + 1 into MyVariable from Mytable where UserClientId = Something
Затем я использую MyVariable в столбце User Client Counter.
Этот метод работает довольно хорошо, но если пользователь подключен из двух разных сеансов, запрос может дать неправильное количество счетчиков... в дополнение к этому производительность может быть плохой в случае больших таблиц...
Есть ли лучший способ заменить такой процесс с помощью последовательностей?
Я искал последовательности сеансов, но они сбрасываются после окончания каждого сеанса.
(Этот столбец необходим для бизнеса и не может быть заменен чем-то вроде rownumber в запросах на восстановление. Поскольку каждый клиент должен всегда сохранять один и тот же идентификатор для пользователя приложения)
Заранее спасибо.
Ваше здоровье,
User Client Counter
? Почему бы не использовать уникальную нумерацию для всех компаний? Я пытаюсь выяснить вариант использования. - person The Impaler   schedule 28.10.2020SELECT MAX(id)
каждый раз. - person The Impaler   schedule 29.10.2020