From: | Д(dot)П(dot) <aspamkiller(at)yandex(dot)ru> |
---|---|
To: | pgsql-ru-general(at)postgresql(dot)org |
Subject: | INSERT ON CONFLICT RETURNING |
Date: | 2017-10-14 14:43:24 |
Message-ID: | 6d849576-34ea-797b-73ea-18a1a939e1d3@yandex.ru |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-ru-general |
И снова здравствуйте.
Как бы мне извернуться, и узнать какое-нибудь поле из конфликтной
записи, которого не было во вставке?
То есть, грубо говоря
я вставляю новую запись в таблицу
# \d requests
Таблица "public.requests"
Столбец | Тип | Модификаторы
---------------+-----------------------------+-------------------------------------------------------
id | bigint | NOT NULL DEFAULT
nextval('requests_id_seq'::regclass)
middleware_id | character varying(1024) |
Индексы:
"requests_pkey" PRIMARY KEY, btree (id)
"requests_middleware_id_index" UNIQUE, btree (middleware_id)
И вот такой командой оно мне, в случае конфликта middleware_id
возвращает ровно ничего.
> insert into requests ( middleware_id ) values (1) on conflict do
nothing returning id;
id
----
(0 строк)
INSERT 0 0
А я хочу id записи, или все поля записи.
Или это невозможно и надо проверять результат и потом SELECT?
В общем если добавить какое-то поле типа access_counter и ON CONFLICT DO
UPDATE SET access_counter = access_counter + 1
то, конечно, id вернётся, но планируется неплохая нагрузка на эту
таблицу и не хочется добавлять.
//ДП
From | Date | Subject | |
---|---|---|---|
Next Message | Михаил | 2017-10-26 05:49:18 | Re: INSERT ON CONFLICT RETURNING |
Previous Message | Dmitry E. Oboukhov | 2017-09-28 08:54:35 | Re: SPAM (6.4) [pgsql-ru-general] Re: [pgsql-ru-general] Re: [pgsql-ru-general] Темпоральные данные в PostgreSQL |