[已解决]数据库建表时,check存在的bug

Posted web小菜鸟ing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[已解决]数据库建表时,check存在的bug相关的知识,希望对你有一定的参考价值。

在数据库建表的时候,如果我们设置了约束检查,如下所示

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

以上是关于[已解决]数据库建表时,check存在的bug的主要内容,如果未能解决你的问题,请参考以下文章

用sql server 建了一个表,可是查询此表时怎莫说不存在呢?

goinception审核规则

goinception审核规则

关于数据库建表时字段数据类型

在 postgres 8.1 中创建表时出错

在Oracle 11g 中创建表时如何保存表?