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
;