【发布时间】:2021-12-20 10:16:15
【问题描述】:
有没有办法修改 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.';
我想通过插入另一个名称来更改CHECK 中的VALUE IN 列表:'user_analytics'。
这是否可能在不删除和重建域、约束或两者的情况下实现?
如果不是,我可以进行级联删除和重建,并认为DOMAIN 不适合这种事情的未来。我总是可以使用一个小的查找表来代替。我只是喜欢DOMAIN,因为它使参数和列的意图更加清晰。
【问题讨论】:
标签: postgresql constraints ddl sql-domain