H2:向带有记录的表添加NOT NULL列

时间:2011-12-05 15:48:43

标签: h2

我想在名为NOT NULL的表格中添加server列。问题是,该表已包含记录。当我调用ALTER TABLE server ADD COLUMN full_discovery_duration BIGINT NOT NULL H2时,抱怨full_discovery_duration可能不为空。我可以通过指定DEFAULT 0来解决此问题,但我不希望在将来的插入中使用默认值。我该怎么办?

我是否应该使用默认值添加列,然后在后续语句中从列定义中删除DEFAULT 0?还有更好的方法吗?

2 个答案:

答案 0 :(得分:3)

您可以先使用默认值添加列,然后将默认值设置为null。据我所知,不可能摆脱默认定义。

另一种方法是首先允许null,然后设置值,然后不允许空值。

drop table server;
create table server(id int);
insert into server values(1);
alter table server 
    add column 
    full_discovery_duration bigint;
update server set full_discovery_duration = 0;
alter table server 
    alter column 
    full_discovery_duration set not null;

答案 1 :(得分:0)

在向现有表添加列时,它应该是可为空的列,或者必须指定默认值。你删除默认值是什么意思?如何从非空列中删除值?