postgres 不删除不为空
Posted
技术标签:
【中文标题】postgres 不删除不为空【英文标题】:postgres doesn't drop not null 【发布时间】:2020-11-15 21:07:37 【问题描述】:我将not null
放在主键列上,然后在我检查表的架构并且有not null
之后执行它
表:
-- auto-generated definition
create table warehouses
(
id_warehouse serial not null
constraint warehouse_pkey
primary key,
responsible_person varchar(30) not null
);
要删除的脚本不为空:
alter table warehouses
drop constraint warehouse_pkey;
alter table warehouses
alter id_warehouse drop not null;
alter table warehouses
add constraint warehouse_pkey
primary key (id_warehouse);
【问题讨论】:
PRIMARY KEY
必须是NOT NULL
,所以当您执行primary key (id_warehouse)
时,您隐式添加了NOT NULL
。如果您不希望这样,请将约束设置为 UNIQUE
而不是 PRIMARY KEY
。
demo - metadata
你希望有尽可能多的NOT NULL
列,这样你的数据质量好,你的SQL语句变得简单快捷。
【参考方案1】:
根据此处的信息:
https://www.postgresql.org/docs/current/sql-createtable.html
PRIMARY KEY(列约束)
PRIMARY KEY 约束指定表的一列或多列只能包含唯一(非重复)、非空值。一个表只能指定一个主键,不管是列约束还是表约束。
定义为PRIMARY KEY
的列也将具有NOT NULL
约束集。
【讨论】:
以上是关于postgres 不删除不为空的主要内容,如果未能解决你的问题,请参考以下文章
在 postgres 表中计算不为空的 json 键-> 值