состоит из двух полей (id, user_id). User_id - внешний ключ. И эти два поля должны быть составным ключом.
Например, если юзер один и тот же, то айди инкриминируется, а если новый, то для него отдельно.
Пример: id - user_id:
1 - 14
2 - 14
3 - 14
1 - 23
1 - 65
2 - 23
Сикенс тут не поможет, потому что юзеров неопределенное количество. Поэтому только через лок. Решил бы я такую задкчу через advisory lock на вставку в эту таблицу с user_id в ключе, брал бы max(id) where user_id=my_user_id и new_id = max(id)+1 . Это 100% рабочее решение. Но в целом я бы присмотрелся к схеме, оч странный составной ключ, возможно вы что-то не то делаете. Запись в таблицу через лок говорит о том, что что-то накостылено
Обсуждают сегодня