@A.Hs Erklärung ist korrekt für PostgreSQL 9.1 oder älter . Es gilt also für den OP, der die veraltete Version 8.3 verwendet.
Allerdings PostgreSQL 9.2 brachte ein wesentliches Update in diesem Bereich. PL/pgSQL-Funktionen sind viel klüger geworden, wenn es darum geht, wann neu geplant werden muss. Ich zitiere hier die Versionshinweise für 9.2
Fettdruck von mir.
Ergo:Eine Lösung für das OP wäre ein Upgrade auf PostgreSQL 9.2+ und alles sollte automatisch gut funktionieren.