我想在名为NOT NULL
的表格中添加server
列。问题是,该表已包含记录。当我调用ALTER TABLE server ADD COLUMN full_discovery_duration BIGINT NOT NULL
H2时,抱怨full_discovery_duration
可能不为空。我可以通过指定DEFAULT 0
来解决此问题,但我不希望在将来的插入中使用默认值。我该怎么办?
我是否应该使用默认值添加列,然后在后续语句中从列定义中删除DEFAULT 0
?还有更好的方法吗?
答案 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)
在向现有表添加列时,它应该是可为空的列,或者必须指定默认值。你删除默认值是什么意思?如何从非空列中删除值?