Re: update with recursive query
От | Pavel Stehule |
---|---|
Тема | Re: update with recursive query |
Дата | |
Msg-id | BANLkTi=XCnec68pVrkkV=_hMT1BHdG4m8g@mail.gmail.com обсуждение исходный текст |
Ответ на | update with recursive query (Steven Dahlin <pgdb.sldahlin@gmail.com>) |
Список | pgsql-sql |
Hello it is possible in 9.1. In older version you have to use a temp table. Regards Pavel Stehule 2011/4/14 Steven Dahlin <pgdb.sldahlin@gmail.com>: > Is it possible to execute an update using recursion? I need to update a set > of records and also update their children with the same value. I tried the > following query but it gave an error at the "update schema.table tbl": > > with recursive childTbl( pid, > ppid, > proc_id, > other_id ) > as ( select prc.pid, > prc.ppid, > prc.proc_id, > prc.other_id > from my_schema.prc_tbl prc > where ( ( prc.proc_path like '%stuff%' ) > or ( prc.proc_parameters like '%stuff%' ) ) > and ( prc.other_id is null ) > union all > select prcsub.pid, > prcsub.ppid, > prcsub.proc_id, > prcsub.other_id > from childTbl prcpar, > my_schema.prc_tbl prcsub > where ( prcsub.ppid = prcpar.pid ) > ) > update my_schema.prc_tbl prc > set other_id = 101 > from childTbl > > However, if I do a "select * from childTbl" it works. The docs take about > updates and talk about recursive queries with selects but nothing seems to > cover the joining of the two. > > Thanks > >
В списке pgsql-sql по дате отправления: