В Postgres у меня есть две таблицы, где мне нужно очистить некоторые данные с помощью каскадного удаления:
- PARTICIPANTS_T: has a foreign key USER_ID on USERS_T.ID
- USERS_T
Первый шаг - удалить из PARTICIPANTS_T, если критерий удовлетворен, например,
delete from PARTICIPANTS_T where VALID_FLAG = 'Y';
Второе - удалить из USERS_T строки, идентификаторы которых были указаны в предыдущем Удалить.
delete from USERS_T where ID = [..from Step 1..]
Как выполнить Каскадное удаление в Postgres?
Я думал о сохранении в переменной: select INTO
,
if exists drop table user_ids; --This syntax is wrong
select id into user_ids from users_t where id in (
select user_id from participants_t where valid_flag = 'Y');
но это неудобно, потому что user_ids
становится отдельной таблицей, которую нужно поддерживать.Мой синтаксис выше неверен.Кто-нибудь может дать полный повторяемый сценарий с этими 2 шагами?