「id_person=1 の ADRESS テーブルのすべてのレコードを削除したい」
Person と Address の間に多対多の関係があります。これは、Persons where によって使用される Address レコードを削除することを意味しますid_person != 1
。それはあなたが本当にやりたいことですか?
その場合は、次の 3 つの手順でこれを行う必要があります。
- whereのすべての値を取得
id_address
するperson_address
id_person=1
- で一致したすべてのレコードを削除します
person_address
- で一致したすべてのレコードを削除します
address
Oracle では、一括アクションと定義済みの ODCINUMBERLIST コレクションを使用して、2 つのステートメントでこれを行うことができます (ID が数値であることを願っています)。
declare
addr_nt ODCINUMBERLIST;
begin
delete from person_address
where id_person=1
returning id_address bulk collect into addr_nt;
forall i in addr_nt.first..addr_nt.last
delete from address
where addr_id = addr_nt(i);
end;
もちろん、テーブル間に外部キーが定義されていない場合は、他の提案に従って、テーブルから簡単に削除できaddress
ます。データは破損して信頼できなくなりますが、それはリレーショナル整合性を強制しないことの代償です。