phpPgAdmin在添加列时自动创建空行

时间:2015-01-21 12:35:08

标签: sql postgresql phppgadmin

我有一个名为“Route”的表(生产postgres数据库的一部分)。由于缺少列“arrival_time”,我使用了phpPgAdmin的“添加列”功能。在那里,我添加了每个重要的属性(名称,类型)。当我在创建列后浏览列时,会自动创建一个值:

arrival_time | count
--------------------
NULL         | 9358

因此,我无法设置约束“NOT_NULL”,但这是必需的。这个自动创建的值的原因是什么?我该如何避免或解决这个问题?

1 个答案:

答案 0 :(得分:2)

这不是phpPgAdmin问题。您必须使用NULL添加新列(无论如何这是默认值),或使用NOT NULL约束添加DEFAULT子句。如果两者都不存在,PostgreSQL不知道如何处理现有行。

  

使用ADD COLUMN添加列时,表中的所有现有行都会使用列的默认值(NULL,如果未指定DEFAULT子句)进行初始化。如果没有DEFAULT子句,这仅仅是元数据更改,不需要立即更新表的数据;相反,在读数时提供了添加的NULL值。

如果您已添加该列,则可以使用单个UPDATE将所有现有行设置为起始值f.ex。:

UPDATE table SET arrival_time = NOW();

之后,您可以向此列添加NOT NULL约束。