在数据库建表的时候,如果我们设置了约束检查,如下所示
create table aa
(
trancode char(4) not null ,
fieldname char(10) not null ,
iotype char(1)
default 'I',
sequence smallint not null ,
check (iotype IN ('I' ,'O' )),
);
check是为了是iotype只能在I和O中
但是如果插入语句为
insert into pjyjk(trancode,fieldname,iotype,sequence) values("9899","O9899",null,"100")
那么可以正常插入,约束并没有检查到插入的iotype为null,这样可能会引起后续的错误
所以,解决方法是,遇到这样的表,需要对字段约束时,再设置为not null即可
iotype char(1)
default 'I',not null