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

PostgreSQL INSERT ON CONFLICT UPDATE (upsert) използва всички изключени стойности

Postgres не е внедрил еквивалент на INSERT OR REPLACE . От ON CONFLICT документи (подчертавам мое):

Тя може да бъде или НАПРАВИ НИЩО, или клауза DO UPDATE, указваща точните подробности на действието UPDATE, което да се извърши в случай на конфликт.

Въпреки че не ви дава стенография за замяна, ON CONFLICT DO UPDATE се прилага по-общо, тъй като ви позволява да задавате нови стойности въз основа на вече съществуващи данни. Например:

INSERT INTO users (id, level)
VALUES (1, 0)
ON CONFLICT (id) DO UPDATE
SET level = users.level + 1;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Получавате стойностите по подразбиране на колоните на таблицата в Postgres?

  2. sql ПОРЪЧАЙТЕ ПО множество стойности в определен ред?

  3. Как се тълкува sql с рекурсивно изявление?

  4. Изключение в JPA при използване на семен файл за PostgreSQL

  5. Как мога да гарантирам, че материализираният изглед винаги е актуален?