Използвате DROP с опцията CASCADE. Така че всяко отпадане на таблици, имащи референтна цялост, също ще отстрани дъщерната таблица, свързана с родителската таблица.
За да отстраните дали това наистина се случва, преди да стартирате кода си, направете моментна снимка на съществуващи таблици с техните OID (мисля, че pg_tables или pg_relations трябва да имат тази информация). Изпълнете кода и проверете OID на съобщението за грешка с моментната снимка за името на таблицата.
Редактиране:Може да се дължи на това как плановете се кешират в PostgreSQL (така че в Redshift) за функции. Това е документиран бъг до 8.2, така че може да искате да потърсите корекция за него. Планът ще бъде кеширан според първото изпълнение на функцията, но за второто изпълнение някои от обектите биха получили нови OID, тъй като са били пресъздадени.http://merlinmoncure.blogspot.ie/2007/09/as-previously-stated-postgresql-8.html
http://www.postgresql.org/message-id/example @sqldat.com