a row is not inserted in nested INSERT ON CONFLICT
От | Jason Kim |
---|---|
Тема | a row is not inserted in nested INSERT ON CONFLICT |
Дата | |
Msg-id | 20240813041751.5en3xrye6hqn54sh@jasonk.me обсуждение исходный текст |
Ответы |
Re: a row is not inserted in nested INSERT ON CONFLICT
|
Список | pgsql-bugs |
Hi, On versions 15.2 and 16.4: create table a (i int, j int, k int, t timestamp default (clock_timestamp()), unique (i)); insert into a values (1, 1), (2, 2), (3, 3); with w(i) as ( insert into a values (1, 100), (2, 200), (3, 300) on conflict (i) do update set i = excluded.i + 10, t = clock_timestamp(),k = 0 returning i ) insert into a values (1, 10), (2, 20) on conflict (i) do update set i = (select (i - 10) from w order by i desc limit1), t = clock_timestamp(), k = 1; table a; gives INSERT 0 1 and i | j | k | t ----+----+---+---------------------------- 11 | 1 | 0 | 2024-08-12 15:13:56.209344 12 | 2 | 0 | 2024-08-12 15:13:56.209361 13 | 3 | 0 | 2024-08-12 15:13:56.209368 2 | 20 | | 2024-08-12 15:13:56.209375 (4 rows) The order of executor events from what I can tell is - start (1, 10) - start (1, 100) - end (1, 100) - start (2, 200) - end (2, 200) - start (3, 300) - end (3, 300) - end (1, 10) - start (2, 20) - end (2, 20) I find it unusual that the (1, 10) insert seems to be ignored. Jason
В списке pgsql-bugs по дате отправления: