транзакций в пг и как они коррелируют с поддержкой целостности/уникальности индексов.
Кейс такой: есть таблица lock со столбцами resource и acquired. По resource построен уникальный индекс. Запрос на вставку выглядит так:
INSERT INTO lock(resource, acquired)
VALUES (@resource, current_timestamp at time zone 'UTC')
ON CONFLICT (resource) DO NOTHING
Нужно ли мне здесь что-то под транзакцией делать?
Целостность, обеспечиваемая самим PostgreSQL (unique/foreign key/check), поддерживается в любом случае. INSERT ... ON CONFICT гарантирует вам, что если транзакция выполнится, то, незавимо от наличия параллельных транзакций, вставка произойдёт (или будет игнорирована) так, как должно было быть, если бы их не было.
Обсуждают сегодня