是否可以一次从表中删除所有 NOT NULL 约束?
我有一个包含很多 NOT NULL 约束的大表,我正在寻找一种比单独删除它们更快的解决方案。
最佳答案
您可以将它们全部分组在同一个 alter 语句中:
alter table tbl alter col1 drop not null,
alter col2 drop not null,
…
如果您想写一个do block,您还可以从目录中检索相关列的列表。生成所需的sql。例如,像这样的东西:
select a.attname
from pg_catalog.pg_attribute a
where attrelid = 'tbl'::regclass
and a.attnum > 0
and not a.attisdropped
and a.attnotnull;
(请注意,这也将包括与主键相关的字段,因此您需要过滤掉它们。)
如果您这样做,请不要忘记在您需要处理列名称中可能存在的奇怪字符时使用 quote_ident()
。
关于sql - 如何一次性从 PostgreSQL 表中删除所有 NOT NULL 约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20146475/