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パラメータと列の意図がより明確になるので、私は好きです。