这是我在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_id和x_id,我不想!MySQL没有这样做.我认为Oracle也不会这样做.
据我所知,PRIMARY KEY强制执行UNIQUE并NOT NULL自动执行但对单列主键有意义.在多列主键表中,唯一性由组合确定.
有没有简单的方法来避免Postgres的这种行为?
如果我执行这个:
CREATE TABLE distributors (m_id integer, x_id integer);
Run Code Online (Sandbox Code Playgroud)
我NOT NULL当然没有任何限制.