Будет ли уникальный индекс для столбца созданного в Rails 5 предотвращать одновременное создание записей? - PullRequest
0 голосов
/ 07 января 2020

Я столкнулся с проблемой, когда мое приложение получает несколько вызовов API, которые вызывают функцию, которая создает запись, и затем функция проверяет, существует ли уже более новая запись, чтобы убедиться, что выполняется только функция для самой новой записи.

Иногда вызовы API поступают слишком быстро, поэтому в поле «create_at» отображаются одинаковые дата и время. Я понимаю, что это разные значения, даже если они отображают одно и то же время, потому что класс Time также сравнивает доли секунд (которые различаются).

Позволяет ли добавление уникального индекса для столбца созданного_атт вместе с любым другим столбцом (который я выберу) избежать создания двух записей, которые могут появиться из-за API " hiccup " или будет ли проверка уникального индекса учитывать доли секунд для столбца созданного_атериала?

Я использую POSTGRESQL.

1 Ответ

1 голос
/ 07 января 2020

Чтобы не иметь двух строк, в которых столбец ts находится в одну секунду, вы можете использовать

CREATE UNIQUE INDEX ON tab (date_trunc('second', ts));
...