Objaśnienie @A.H jest dokładny dla PostgreSQL 9.1 lub starszego . Tak więc dotyczy to OP, który używa przestarzałej wersji 8.3.
Jednak PostgreSQL 9.2 przyniosła istotną aktualizację w tej dziedzinie. Funkcje PL/pgSQL stały się o wiele mądrzejsze, jeśli chodzi o przeplanowanie. Cytuję informacje o wydaniu 9.2 tutaj
Pogrubiony nacisk na moje.
Ergo:Jedno rozwiązanie dla OP byłoby uaktualnienie do PostgreSQL 9.2+ i wszystko powinno działać automatycznie.