我有一个根本不应该有任何 NULL 值的表。当我设置 NOT NULL 约束时,它不允许该语句并且它因约束错误而失败。仅当插入语句中未引用该列时,才会发生默认约束。
我们怎样才能解决这个问题?如果插入语句的任何列具有 NULL 值,则必须采用 DEFAULT 值而不是 NULL 值。
create table temp1 (col0 int, col1 int default 0);
insert into temp1 (col0) values (1); --> col0 -> 1 and col1 ->0
insert into temp1 (col0,col1) values (1,NULL); --> col0 -> 1 and col1 -> NULL (I would expect a 0 here instead of NULL)
alter table temp1 (add column col2 int not null default 0); --> col2 -> 0 for all the existing rows
insert into temp1 (col0) values (2); --> col0 -> 2 and col1 ->0 and col2-> 0
select * from temp1;
COL0 |COL1 |COL2
1 |0 |0
1 |(null) |0
2 |0 |0