Re: BUG #13675: Problem statement “INSERT ON CONFLICT WHERE"

Поиск
Список
Период
Сортировка
От Andres Freund
Тема Re: BUG #13675: Problem statement “INSERT ON CONFLICT WHERE"
Дата
Msg-id 20151013014729.GC20675@awork2.anarazel.de
обсуждение исходный текст
Ответ на BUG #13675: Problem statement “INSERT ON CONFLICT WHERE"  (nmgjinan@126.com)
Список pgsql-bugs
On 2015-10-13 01:42:09 +0000, nmgjinan@126.com wrote:
> postgres=# insert into distributors values (1,'hgdb')
> postgres-# on conflict (did) where is_active do update set
> dname=EXCLUDED.dname;
> INSERT 0 1
> postgres=# select * from distributors ;
>  did | dname | is_active
> -----+-------+-----------
>    2 | bbb   | t
>    1 | hgdb  | f
> (2 rows)
>
> postgres=#
>
> Why, when the where condition is true or false, the fields are change?

The WHERE above is parsed as parsed as the ON CONFLICT clause - where
it's just for specifying partial indexes and such. Put the WHERE after
the DO UPDATE and you'll be good.

Greetings,

Andres Freund



В списке pgsql-bugs по дате отправления:

Предыдущее
От: nmgjinan@126.com
Дата:
Сообщение: BUG #13675: Problem statement “INSERT ON CONFLICT WHERE"
Следующее
От: postgresql@zr40.nl
Дата:
Сообщение: BUG #13674: psql: \i from a script run through \e misparses SQL as \i arguments