phpPgAdmin 在添加列时自动创建空行
phpPgAdmin automatically creates null row during adding a column
我有一个 table,叫做 "Route"(生产 postgres 数据库的一部分)。由于缺少列 "arrival_time",我使用了 phpPgAdmin 的 "Add column" 函数。在那里,我添加了每个重要的 属性(名称、类型)。当我浏览创建后的列时,会自动创建一个值:
arrival_time | count
--------------------
NULL | 9358
因此,我无法设置约束 "NOT_NULL",但这是必需的。这个自动创造价值的原因是什么?我该如何避免或解决这个问题?
这不是 phpPgAdmin 问题。您必须添加带有 NULL
的新列(无论如何这是默认设置),或者添加带有 NOT NULL
约束 和 的 DEFAULT
子句。如果两者都不存在,PostgreSQL 不知道如何处理现有行。
When a column is added with ADD COLUMN
, all existing rows in the table are initialized with the column's default value (NULL
if no DEFAULT
clause is specified). If there is no DEFAULT
clause, this is merely a metadata change and does not require any immediate update of the table's data; the added NULL
values are supplied on readout, instead.
如果您已经添加了该列,则可以使用单个 UPDATE
将所有现有行设置为起始值,f.ex.:
UPDATE table SET arrival_time = NOW();
之后,您可以向该列添加一个NOT NULL
约束。
我有一个 table,叫做 "Route"(生产 postgres 数据库的一部分)。由于缺少列 "arrival_time",我使用了 phpPgAdmin 的 "Add column" 函数。在那里,我添加了每个重要的 属性(名称、类型)。当我浏览创建后的列时,会自动创建一个值:
arrival_time | count
--------------------
NULL | 9358
因此,我无法设置约束 "NOT_NULL",但这是必需的。这个自动创造价值的原因是什么?我该如何避免或解决这个问题?
这不是 phpPgAdmin 问题。您必须添加带有 NULL
的新列(无论如何这是默认设置),或者添加带有 NOT NULL
约束 和 的 DEFAULT
子句。如果两者都不存在,PostgreSQL 不知道如何处理现有行。
When a column is added with
ADD COLUMN
, all existing rows in the table are initialized with the column's default value (NULL
if noDEFAULT
clause is specified). If there is noDEFAULT
clause, this is merely a metadata change and does not require any immediate update of the table's data; the addedNULL
values are supplied on readout, instead.
如果您已经添加了该列,则可以使用单个 UPDATE
将所有现有行设置为起始值,f.ex.:
UPDATE table SET arrival_time = NOW();
之后,您可以向该列添加一个NOT NULL
约束。