1

Postgres 13.4 で既存の制約の詳細を変更する方法はありますか?DOMAIN

私は試し、ドキュメントをチェックしてきましたが、答えは「いいえDROP、制約(またはドメインと制約?)、および再構築」であると思われます。

DROPすでに制約を使用しているフィールドと関数があるため、これは厄介ですCREATE。私はそれを行うことができますが、それは少し複雑です。

例として、次のような単純なドメイン リストがあります。

DROP DOMAIN IF EXISTS domains.user_name;

CREATE DOMAIN domains.user_name AS
    citext
    NOT NULL
    CONSTRAINT user_name_legal_values
        CHECK(
            VALUE IN (
                'postgres',
                'dbadmin',
                'user_bender',
                'user_cleanup',
                'user_domo_pull'
            )
     );

COMMENT ON DOMAIN domains.user_name IS
    'Valid user_name role names.';

もう1 つ名前を挿入VALUE INして、 のリストを変更したいと思います: 。CHECK'user_analytics'

ドメイン、制約、またはその両方を削除して再構築せずにこれは可能ですか?

そうでない場合は、カスケードされた削除と再構築を行い、DOMAINこの種の適切なツールではない将来を予測できます。代わりに小さなルックアップ テーブルをいつでも使用できます。DOMAINパラメータと列の意図がより明確になるので、私は好きです。

4

1 に答える 1