быть уникальны, на них есть гин индекс (без уникальности),
потом есть он-инсерт триггер, который ходит в этот индекс на предмет поиска дублей,
есть у него шансы не увидеть вставляемый дубль, если его в то же время закоммитила другая транзакция?
Очень много писать, кинусь статьёй. Вот здесь отлично отвечают именно на ваш вопрос: https://vladmihalcea.com/postgresql-triggers-isolation-levels/ Вкратце - при read commited уровне изоляции, write skew не возникнет.
Обсуждают сегодня