是否可以一次性删除表中的所有 NOT NULL 约束?
我有一个大表,其中有很多 NOT NULL 约束,并且我正在寻找一种比单独删除它们更快的解决方案。
您可以将它们全部分组在同一个 alter 语句中:
alter table tbl alter col1 drop not null,
alter col2 drop not null,
…
如果您想编写一个,您还可以从目录中检索相关列的列表do block http://www.postgresql.org/docs/current/static/sql-do.html生成所需的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()
如果您需要处理列名称中潜在的奇怪字符。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)