小编S. *_* D.的帖子

复合PRIMARY KEY对涉及的列强制执行NOT NULL约束

这是我在Postgres中遇到的一个奇怪的,不需要的行为:当我使用复合主键创建Postgres表时,它会对复合组合的每一列强制执行NOT NULL约束.

例如,

CREATE TABLE distributors (m_id integer, x_id integer, PRIMARY KEY(m_id, x_id));
Run Code Online (Sandbox Code Playgroud)

强制NOT NULL列上的约束m_idx_id,我不想!MySQL没有这样做.我认为Oracle也不会这样做.

据我所知,PRIMARY KEY强制执行UNIQUENOT NULL自动执行但对单列主键有意义.在多列主键表中,唯一性由组合确定.

有没有简单的方法来避免Postgres的这种行为?
如果我执行这个:

CREATE TABLE distributors (m_id integer, x_id integer);
Run Code Online (Sandbox Code Playgroud)

NOT NULL当然没有任何限制.

postgresql null database-design unique primary-key

20
推荐指数
1
解决办法
1万
查看次数

标签 统计

database-design ×1

null ×1

postgresql ×1

primary-key ×1

unique ×1