PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak upsertować w Postgresie o konflikcie na jednej z 2 kolumn?

Tak, i to zachowanie jest domyślne. Każde naruszenie unikalnego ograniczenia stanowi konflikt, a następnie UPDATE jest wykonywane, jeśli ON CONFLICT DO UPDATE jest specyficzne. INSERT instrukcja może mieć tylko jeden ON CONFLICT klauzula, ale conflict_target tej klauzuli może określać wiele nazw kolumn, z których każda musi mieć indeks, na przykład UNIQUE ograniczenie. Jesteś jednak ograniczony do jednego conflict_action i nie będziesz mieć informacji o tym, które ograniczenie spowodowało konflikt podczas przetwarzania tej akcji. Jeśli potrzebujesz tego rodzaju informacji lub określonej akcji w zależności od naruszenia ograniczenia, powinieneś napisać funkcję wyzwalającą, ale wtedy stracisz bardzo ważną atomowość INSERT ... ON CONFLICT DO ... oświadczenie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyliczenia Java, JPA i Postgres — jak sprawić, by ze sobą współpracowały?

  2. SQLAlchemy func.count w kolumnie logicznej

  3. Wyszukiwanie pełnotekstowe Postgresql w postgresql - japoński, chiński, arabski

  4. Lista przechowywanych funkcji, które odwołują się do tabeli w PostgreSQL

  5. Zapytać o szczegóły schematu tabeli w PostgreSQL?