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



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

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

因此,我无法设置约束"NOT_NULL",但这是必需的。这个自动创建的价值的原因是什么?我怎样才能避免它或解决这个问题?

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

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

如果已添加列,则可以使用单个UPDATE将所有现有行设置为起始值,例如:

UPDATE table SET arrival_time = NOW();

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

相关内容

  • 没有找到相关文章

最新更新