déplacer des données d'une table à une autre, édition postgresql

Je voudrais déplacer des données à partir d'une table à l'autre (avec, éventuellement, un autre schéma). Solution immédiate qui vient à l'esprit est -

start a transaction with serializable isolation level;
INSERT INTO dest_table SELECT data FROM orig_table,other-tables WHERE <condition>;
DELETE FROM orig_table USING other-tables WHERE <condition>;
COMMIT;

Maintenant, si la quantité de données est plutôt grand, et la <condition> est onéreux? Dans PostgreSQL, une RÈGLE ou une procédure stockée peut être utilisée pour supprimer des données à la volée, l'évaluation de la condition qu'une seule fois. Quelle solution est la meilleure? Existe-il d'autres options?

source d'informationauteur IggShaman