PostgreSQL: как провести операцию insert с on conflict?

Имеется таблица:

 aircraft_code | seat_no | fare_conditions 
---------------+---------+-----------------
 319           | 2A      | Business
 319           | 2C      | Business
 319           | 2D      | Business

Нужно провести две операции insert on conflict: с использованием перечисления имён столбцов для проверки дублирования, а также с использованием `on constraint' (ограничение должно наклажываться на составной ключ, состоящий из двух столбцов) Помогите, пожалуйста.


Ответы (1 шт):

Автор решения: Ainar-G

Вы не указали, что за CONSTRAINT, поэтому вот вам фантазия на тему:

CREATE TABLE t (
  aircraft_code   INTEGER
, seat_no         TEXT
, fare_conditions TEXT

, CONSTRAINT t_pkey PRIMARY KEY (aircraft_code, seat_no)
)
;

INSERT INTO t
  (aircraft_code, seat_no, fare_conditions)
VALUES
  (          319,    '2D',       'Economy')
    ON CONFLICT (aircraft_code, seat_no) DO
UPDATE
   SET fare_conditions = EXCLUDED.fare_conditions
;

INSERT INTO t
  (aircraft_code, seat_no, fare_conditions)
VALUES
  (          319,    '2D',      'Business')
    ON CONFLICT ON CONSTRAINT t_pkey DO
UPDATE
   SET fare_conditions = EXCLUDED.fare_conditions
;
→ Ссылка