Re: [pgsql-ru-general] INSERT ON CONFLICT RETURNING
От | Dmitry E. Oboukhov |
---|---|
Тема | Re: [pgsql-ru-general] INSERT ON CONFLICT RETURNING |
Дата | |
Msg-id | 20171026075655.iajfg5xueumhm6jc@vdsl.uvw.ru обсуждение исходный текст |
Ответ на | [pgsql-ru-general] INSERT ON CONFLICT RETURNING (Д.П. <aspamkiller@yandex.ru>) |
Ответы |
Re: [pgsql-ru-general] INSERT ON CONFLICT RETURNING
|
Список | pgsql-ru-general |
WITH "r" AS ( INSERT INTO ... ON CONFLICT ... DO NOTHING RETURNING * ) SELECT * FROM ... WHERE id = $id AND NOT EXISTS (SELECT * FROM "r") UNION SELECT * FROM "r" ; как-то так вернет вставленную/uptate'ную запись или имеющуюся On 17:43 Sat 14 Oct , Д.П. wrote: > И снова здравствуйте. > Как бы мне извернуться, и узнать какое-нибудь поле из конфликтной записи, > которого не было во вставке? > То есть, грубо говоря > я вставляю новую запись в таблицу > # \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 вернётся, но планируется неплохая нагрузка на эту таблицу и > не хочется добавлять. > //ДП > -- > Sent via pgsql-ru-general mailing list (pgsql-ru-general@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-ru-general -- . ''`. Dmitry E. Oboukhov <unera@debian.org> : :’ : `. `~’ GPG key: 4096R/08EEA756 2014-08-30 `- 71ED ACFC 6801 0DD9 1AD1 9B86 8D1F 969A 08EE A756
В списке pgsql-ru-general по дате отправления: