PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да upsert в Postgres при конфликт на една от 2 колони?

Да, и това поведение е по подразбиране. Всяко нарушение на уникалното ограничение представлява конфликт и след това UPDATE се изпълнява, ако ON CONFLICT DO UPDATE е посочено. INSERT изразът може да има само един ON CONFLICT клауза, но conflict_target на тази клауза може да посочи няколко имена на колони, всяка от които трябва да има индекс, като например UNIQUE ограничение. Вие обаче сте ограничени до едно conflict_action и няма да имате информация кое ограничение е причинило конфликта при обработката на това действие. Ако имате нужда от такъв вид информация или специфично действие в зависимост от нарушението на ограничението, трябва да напишете тригерна функция, но тогава губите изключително важната атомарност на INSERT ... ON CONFLICT DO ... изявление.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgresql:Няма достъп до файла « $libdir/postgis-2.1 » няма такъв файл или директория

  2. PostgreSQL функция/запаметена процедура CURRENT_TIMESTAMP не се променя

  3. Изчисляване на процента игра отново на следващия ден

  4. Разлика между подниз в Postgresql

  5. Как да получа подниз от sql таблица?