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

PostgreSQL Upsert (w przypadku konfliktu) z tymi samymi wartościami w Insert i Update

Użyj excluded słowo kluczowe:

INSERT INTO cars 
  (car_id, car_type, car_model) 
values
  (1, 'tesla', 'model s')
ON CONFLICT (car_id) DO UPDATE SET 
  car_type = excluded.car_type,
  car_model = excluded.car_model;

Działa to również poprawnie w przypadku wielu wierszy, np.:

INSERT INTO cars 
  (car_id, car_type, car_model) 
values
  (1, 'tesla', 'model s'), 
  (2, 'toyota', 'prius')
ON CONFLICT (car_id) DO UPDATE SET 
  car_type = excluded.car_type,
  car_model = excluded.car_model;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać komentarz do roli z bazy danych PostgreSQL

  2. Jak w tabeli PostgresQL utworzyć kolumnę ze wszystkimi wartościami w kolumnie 1, dla której wartość bieżącego wiersza w kolumnie 1 pojawia się w kolumnie 2?

  3. Jak mogę wykonać kod pl/pgsql bez tworzenia funkcji?

  4. STWÓRZ JĘZYK plpython3u – PostgreSQL 9.6

  5. dlaczego postgres wyświetla jednocześnie błąd aktualizacji wiersza, gdy wyraźnie blokuję całą tabelę?