PostgreSQLにユーザー定義型がすでに存在するかどうかを確認する 質問する

PostgreSQLにユーザー定義型がすでに存在するかどうかを確認する 質問する

DBにユーザー定義型をいくつか作成したとします。

つまりCREATE TYPE abc ...

その場合、ユーザー定義型が存在するかどうかを判断することは可能ですか? おそらく、postgres 情報テーブルのいずれかを使用することになりますか?

その主な理由は、PostgreSQL が をサポートしていないようでCREATE OR REPLACE TYPE ...、特定のタイプが複数回作成された場合に、まず既存のタイプを削除してから、新しいタイプを再ロードできるようにしたいからです。

ベストアンサー1

ここでは、この目的のためだけに関数を作成する必要なく、簡単なスクリプトで型を作成するための完全なソリューションを追加します。

--create types
DO $$
BEGIN
    IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'my_type') THEN
        CREATE TYPE my_type AS
        (
            --my fields here...
        );
    END IF;
    --more types here...
END$$;

おすすめ記事