CASCADEオプションを指定してDROPを使用しています。したがって、参照整合性を持つテーブルを削除すると、親テーブルに関連付けられている子テーブルも削除されます。
これが実際に起こっているかどうかをトラブルシューティングするには、コードを実行する前に、既存のテーブルのスナップショットをOIDとともに作成します(pg_tablesまたはpg_relationsにこの情報が必要だと思います)。コードを実行し、テーブル名のスナップショットを使用してエラーメッセージのOIDを確認します。
編集:それは、関数のためにプランがPostgreSQL(つまりRedshift)にどのようにキャッシュされているかが原因である可能性があります。これは8.2まで文書化されたバグであるため、修正を検索することをお勧めします。プランは関数の最初の実行に従ってキャッシュされますが、2回目の実行では、一部のオブジェクトは再作成されたために新しいOIDを取得します。
http://www.postgresql.org/message-id/example @ sqldat.com