以前のコメントによると、それは問題になるはずです。とは言うものの、あなたが探しているものかもしれないコマンドがあります-それは制約を延期に設定するので、それらはすべての削除ではなく、COMMITでチェックされます。すべての行に対して1つの大きなDELETEを実行している場合は違いはありませんが、分割して実行している場合は違いがあります。
SET CONSTRAINTS ALL DEFERRED
その場合あなたが探しているものです。制約はDEFERRABLE
としてマークする必要があることに注意してください それらが延期される前に。例:
ALTER TABLE table_name
ADD CONSTRAINT constraint_uk UNIQUE(column_1, column_2)
DEFERRABLE INITIALLY IMMEDIATE;
制約は、トランザクションまたは関数で次のように延期できます。
CREATE OR REPLACE FUNCTION f() RETURNS void AS
$BODY$
BEGIN
SET CONSTRAINTS ALL DEFERRED;
-- Code that temporarily violates the constraint...
-- UPDATE table_name ...
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;