Задать вопрос
@User99

Как сделать RETURNING id с блокировкой?

При вставке данных в БД возвращается ID с помощью встроенной функции RETURNING id;
Но получилось так что, вставили запись сразу около 50 чел одновременно. И соответственно половине возвратился ID того самого кто последний вставил запись.
Это наверное единичный случай. Но конфиденциальный материал получил другой человек.
Как это можно исправить? Как возвращать ID только того кто вставил запись, а не последнюю запись?
Пример:
spoiler

Маша вставил в базу запись: "Привет, я Маша!" ->ID: 1
Саша вставил в базу запись: "Привет, я Саша!" -> ID: 2
Так получилось что они сохранили одновременно. Но на миллисекунд позже сохранил Саша.

И так получилось что Маше возвращается ID Саши, то есть ID=2;



Как это можно исправить?

Более 3 млн. записей. Одновременных пользователей около 1 тыс. База PostgreSQL
  • Вопрос задан
  • 56 просмотров
Подписаться 2 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Академия Эдюсон
    Python-разработчик
    9 месяцев
    Далее
  • ProductStar × РБК
    Профессия DevOps-инженер
    5 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
@galaxy
И так получилось что Маше возвращается ID Саши, то есть ID=2;

Так не могло получиться. INSERT RETURNING возвращает строго то, что он вставил (а не какую-то "последнюю запись")
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы