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