Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0

Поиск
Список
Период
Сортировка
Искать
От
Robert Haas
Тема
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0
Дата
в 14:39:39
Msg-id
CA+TgmoYozhG9dcwpVwQ+cpOs+5jakx6MUuXy9zVoXcDSViYqZg@mail.gmail.com
Ответ на
Список
Дерево обсуждения
INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Peter Geoghegan <pg@heroku.com>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Andres Freund <andres@anarazel.de>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Peter Geoghegan <pg@heroku.com>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0, parser/executor stuff Andres Freund <andres@anarazel.de>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0, parser/executor stuff Andres Freund <andres@anarazel.de>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0, parser/executor stuff Andres Freund <andres@anarazel.de>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0, parser/executor stuff Peter Geoghegan <pg@heroku.com>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0, parser/executor stuff Peter Geoghegan <pg@heroku.com>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Andres Freund <andres@anarazel.de>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Robert Haas <robertmhaas@gmail.com>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Andres Freund <andres@anarazel.de>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Petr Jelinek <petr@2ndquadrant.com>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Robert Haas <robertmhaas@gmail.com>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Andres Freund <andres@anarazel.de>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Robert Haas <robertmhaas@gmail.com>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Andres Freund <andres@anarazel.de>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Robert Haas <robertmhaas@gmail.com>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Peter Geoghegan <pg@heroku.com>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Andres Freund <andres@anarazel.de>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Peter Geoghegan <pg@heroku.com>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Stephen Frost <sfrost@snowman.net>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Andres Freund <andres@anarazel.de>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Peter Geoghegan <pg@heroku.com>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Andres Freund <andres@anarazel.de>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Peter Geoghegan <pg@heroku.com>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Heikki Linnakangas <hlinnaka@iki.fi>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Andres Freund <andres@anarazel.de>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Andreas Karlsson <andreas@proxel.se>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Andres Freund <andres@anarazel.de>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Peter Geoghegan <pg@heroku.com>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Andres Freund <andres@anarazel.de>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Tom Lane <tgl@sss.pgh.pa.us>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Andres Freund <andres@anarazel.de>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Tom Lane <tgl@sss.pgh.pa.us>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Andres Freund <andres@anarazel.de>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Andres Freund <andres@anarazel.de>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Heikki Linnakangas <hlinnaka@iki.fi>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Andres Freund <andres@anarazel.de>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Peter Geoghegan <pg@heroku.com>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Andres Freund <andres@anarazel.de>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Tom Lane <tgl@sss.pgh.pa.us>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Andres Freund <andres@anarazel.de>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Tom Lane <tgl@sss.pgh.pa.us>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Andres Freund <andres@anarazel.de>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Peter Geoghegan <pg@heroku.com>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Tom Lane <tgl@sss.pgh.pa.us>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Tom Lane <tgl@sss.pgh.pa.us>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Stephen Frost <sfrost@snowman.net>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Tom Lane <tgl@sss.pgh.pa.us>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Andres Freund <andres@anarazel.de>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Andres Freund <andres@anarazel.de>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Tom Lane <tgl@sss.pgh.pa.us>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Stephen Frost <sfrost@snowman.net>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Peter Geoghegan <pg@heroku.com>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Stephen Frost <sfrost@snowman.net>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Peter Geoghegan <pg@heroku.com>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Thom Brown <thom@linux.com>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Andres Freund <andres@anarazel.de>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Thom Brown <thom@linux.com>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Andres Freund <andres@anarazel.de>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Tom Lane <tgl@sss.pgh.pa.us>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Andres Freund <andres@anarazel.de>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Tom Lane <tgl@sss.pgh.pa.us>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Peter Geoghegan <pg@heroku.com>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Andres Freund <andres@anarazel.de>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Peter Geoghegan <pg@heroku.com>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Andres Freund <andres@anarazel.de>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Geoff Winkless <pgsqladmin@geoff.dj>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Andres Freund <andres@anarazel.de>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Geoff Winkless <pgsqladmin@geoff.dj>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Peter Geoghegan <pg@heroku.com>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Peter Geoghegan <pg@heroku.com>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Heikki Linnakangas <hlinnaka@iki.fi>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Peter Geoghegan <pg@heroku.com>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Heikki Linnakangas <hlinnaka@iki.fi>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Peter Geoghegan <pg@heroku.com>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Heikki Linnakangas <hlinnaka@iki.fi>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Peter Geoghegan <pg@heroku.com>
Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0 Peter Geoghegan <pg@heroku.com>
On Fri, May 1, 2015 at 10:24 AM, Andres Freund  wrote:
>> > Well, it's a BEFORE INSERT trigger, not a BEFORE UPDATE, that's why I'm
>> > not so sure that argument applies.
>>
>> Would the BEFORE UPDATE trigger even fire in this case?
>
> BEFORE UPDATE triggers fire for INSERT ... ON CONFLICT UPDATE iff
> there's a conflict, yes.
>
>> The thing is, suppose somebody puts a BEFORE INSERT trigger and a
>> BEFORE UPDATE trigger on the table, and each of those triggers does
>> this:
>>
>> NEW.last_updated_time = clock_timestamp();
>> return NEW;
>>
>> That should work, and should cover all cases, even if you're using UPSERT.
>
> The BEFORE UPDATE would catch things in this case.

OK.  In that case, I'm a lot less sure what the right decision is.  It
seems weird for both the BEFORE INSERT and BEFORE UPDATE triggers to
get a crack at the same tuple, so your way might be better after all.
But on the other hand, the BEFORE INSERT trigger might have had side
effects, so we can't just pretend it didn't happen.

One idea is to decide that an INSERT with an ON CONFLICT UPDATE
handler is still an INSERT.  Period.  So the INSERT triggers run, the
UPDATE triggers don't, and that's it.

Not sure.

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


В списке pgsql-hackers по дате отправления
От: Stephen Frost
Дата:
От: Robert Haas
Дата:
FAQ