Por comentários anteriores, deve ser um problema. Dito isto, existe um comando que pode ser o que você está procurando - ele definirá as restrições como adiadas para que sejam verificadas no COMMIT, não em todas as deleções. Se você estiver fazendo apenas um grande DELETE de todas as linhas, não fará diferença, mas se estiver fazendo em partes, fará.
SET CONSTRAINTS ALL DEFERRED
é o que você está procurando nesse caso. Observe que as restrições devem ser marcadas como
DEFERRABLE
antes que possam ser adiados. Por exemplo:ALTER TABLE table_name
ADD CONSTRAINT constraint_uk UNIQUE(column_1, column_2)
DEFERRABLE INITIALLY IMMEDIATE;
A restrição pode então ser adiada em uma transação ou função da seguinte forma:
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;