Postgresql Оператор WITH несколько удалений - PullRequest
0 голосов
/ 28 марта 2020

Я могу сделать это за Postgresql?

with userToDelete as (
    select userid from users where condition;
) (
    delete from table1 where user_id = userToDelete;
    delete from table2 where userid = userToDelete;
    delete from table3 where user_id = userToDelete;
);

Я посмотрел, но ничего не нашел. Спасибо.

1 Ответ

2 голосов
/ 28 марта 2020

Вам нужно несколько CTE:

with userToDelete as (
  select userid 
  from users 
  where condition
), t1 as (
  delete from table1 
  where user_id in (select userid from userToDelete)
), t2 as (
  delete from table2 
  where userid in (select userid from userToDelete)
)
delete from table3 
where user_id in (select userid from userToDelete);

Обратите внимание, что для завершения всего оператора есть только один ;.

...