PostgreSQL 12
当我重命名表中的列时,我也想动态重命名匹配的检查约束。
我有一个假设的表格:
CREATE TABLE hypothetical_table (
id SERIAL PRIMARY KEY,
some_col text,
some_col_also text
);
有以下限制:
ALTER TABLE hypothetical_table ADD CONSTRAINT some_col_length_>_5 CHECK(char_length(some_col) > 5);
ALTER TABLE hypothetical_table ADD CONSTRAINT some_col_also_length_>_5 CHECK(char_length(some_col_also) > 5);
我不知道列可能有什么限制。我知道它们以列名为前缀。但是,就像some_col
上面的约束一样,该前缀可能与另一列的 ( some_col_also
) 匹配。
当我重命名此表中的列时,我也想重命名约束,以匹配新的列名。
那么,如果我要重命名some_col
,如何选择与该列关联的所有检查约束?
我尝试pg_catalog.pg_constraint
使用pg_catalog.pg_attribute
ON con.conkey = pga.attnum
(conkey
未嵌套)加入,但这会返回许多与该列无关的约束。