deleteでのusingは以下の様なものです。やろうとしている事には即しません。
DELETE FROM [ ONLY ] table [ [ AS ] alias ]
[ USING using_list ]
[ WHERE condition | WHERE CURRENT OF cursor_name ]
[ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]
using_list
WHERE条件内に他のテーブルの列を許可するための、テーブル式のリストです。 これは、SELECT文のFROM句において指定できるテーブルのリストと同様です。 例えば、テーブル名の別名も指定することができます。 自己結合を設定する目的以外ではusing_listに対象のテーブルを繰り返さないでください。
方法は2つ考えられます。
CASCADE
外部キー制約として、参照側にON DELETE CASCADEが設定されている場合は、被参照側が削除された場合に合わせて削除されます。
CREATE TEMPORARY TABLE COMMIT ON DROP
発行するSQLは複数となりますが、一連のトランザクションで、一時テーブルに削除した情報を残せば他のテーブルにも利用できます。
一時テーブルに情報を格納するのには、以下の様にWITHを使用すると複数データの場合にも対応できます。
SQL
1create temporary table delete_log (id as integer) commit on drop;
2with delete_rows as (
3 delete from m_user where uid = 7
4 returning *
5)
6insert into delete_log
7select uid from moved_rows;
ただ複数のデータを一括で処理するような場合に利用するものですから、指定するキーが分かっているような今回の場合には敢えて行う必要が無いものです。