Допустим, у меня есть 2 таблицы.
Таблица submissions
со столбцами: message_id
, segment_id
, ...
Таблица segments
со столбцами: segment_id
, ...
Мне нужно удалить записи в обеих таблицах только на основе message_id
.
Я знаю, что могу сделать что-то вроде этого:
DELETE
FROM
segments
WHERE
segment_id in (select segment_id FROM submissions WHERE message_id = p_message_id);
DELETE
FROM
submissions
WHERE
message_id = p_message_id;
Но мне интересно, есть ли более элегантный (с точки зрения производительности) способ сделать что-то подобное за один раз?
DELETE
FROM
segments
WHERE
segment_id in (DELETE FROM submissions WHERE message_id = p_message_id RETURNING segment_id);
Если я запускаю следующий подзапрос 'delete' для себя, он работает должным образом и возвращает удаленные сегмент_id:
DELETE FROM submissions WHERE message_id = p_message_id RETURNING segment_id;
Есть идеи?