Как сделать postgres SQL функцию, которая использует значение из удаленной строки? - PullRequest
0 голосов
/ 16 апреля 2020

Как сделать функцию postgres SQL, которая использует значение из удаленной строки в следующем запросе? Это просто сделать в PLPG SQL с помощью переменной, но, поскольку в функциях SQL нет переменных, как я могу это сделать?

delete from mytable where key1 = '1' and key2 = '2' returning otherkey;
update mytable set otherkey = OTHERKEY where key1 = '1' and otherkey = '2';
-- "OTHERKEY" is the value returned by the first query

Есть ли способ сделать это с помощью подзапроса

1 Ответ

2 голосов
/ 16 апреля 2020

Postgres поддерживает операторы изменения данных в CTE - с возвращаемым предложением.

Таким образом, вы можете делать в точности то, что хотите:

with d as (
      delete from mytable
          where key1 = '1' and key2 = '2'
          returning otherkey
     )
update mytable
    set otherkey = d.OTHERKEY
    from d
    where key1 = '1' and otherkey = '2';
...