Вы можете подождать 9.1
или создать функцию, возвращающую множество:
CREATE OR REPLACE FUNCTION fn_delete_btable(params)
RETURNS SETOF btable.aid%TYPE
AS
$$
DELETE
FROM btable
WHERE expression_over_params(params)
RETURNING
aid
$$
LANGUAGE 'sql';
DELETE
FROM atable
WHERE aid IN
(
SELECT aid
FROM fn_delete_btable(params)
)
PS На всякий случай, если вы не знаете о стандартном SQL
способе сделать это.
Если вы создадите таблицы следующим образом:
CREATE TABLE btable (aid INT NOT NULL UNIQUE, …)
CREATE TABLE atable (aid INT NOT NULL FOREIGN KEY REFERENCES (aid) ON DELETE CASCADE, …)
, то удаление из btable
также приведет к удалению из atable
.
Чтобы это работало,btable.aid
должно быть UNIQUE
или PRIMARY KEY
, и это менее эффективно для массовых обновлений, чем решение на основе набора.