私がしたいのはtable 1
から行を削除し、行から削除し、外字キーで参照されたtable 1
の行を削除することです。テーブル2の外来キーを削除してon delete cascade
で再作成せずにこれを実行できるかどうかを知りたい。テーブルからどのように削除すると削除された行を参照して削除するには? (postgresql)
私はSQLにうまくやっていないし、3つの異なるアサーションを成功させることなく試みました。
1:
delete from table1 a, table2 b where a.table2_id = b.id and a.column < 0;
2一度に複数のテーブルから削除しようとすると:選択からアレイを作成および削除するためにそれを使用する:リターン
delete from table2 where id in
(delete from table1 where column < 0 returning table2_id as id);
3で削除両方のテーブルから
DECLARE
arr integer[] := array(select table2_id from table1 where column < 0);
BEGIN
FOREACH m SLICE 1 IN ARRAY arr
LOOP
delete from table1 where table2_id = m;
delete from table2 where id = m;
END LOOP;
END
ありがとうございました。 –