我用SQL Server 2005 数据库里有个字段在允许为空上没有打钩,数据类型为nvarchar(20),为什么依旧可以插入空数据

解决方案 »

  1.   

    可能你插入的是空串,而不是 null.
      

  2.   

    lz啊...你用的2005啊  留个qq帮我个忙吧============
    谁电脑装了sql server2005.请人帮忙打开个数据库看几张表
    本人电脑装的是2000...想看看这个数据库里面的表 然后自己重新建一个...
    求帮忙..qq联系或站内信..
      

  3.   

    create table tb(col nvarchar(20) not null)
    insert into tb select ''
    go
    select count(*) from tb
    go
    drop table tb
    /*
    -----------
    1(1 行受影响)
    */
      

  4.   


    写个例程,插入空串 ''
    你如果还要禁止插入空串,可以写个约束,如:
    create table tb(col nvarchar(20) not null)
    ALTER TABLE dbo.tb ADD CONSTRAINT
    CK_col CHECK (len(ltrim(col))<>'')
    go
    insert into tb select ''
    /*
    消息 547,级别 16,状态 0,第 1 行
    INSERT 语句与 CHECK 约束"CK_col"冲突。该冲突发生于数据库"test",表"dbo.tb", column 'col'。
    语句已终止。
    */
    go
    drop table tb不过,一般这类限制都是在应用层解决的,因为约束不能直接传递到用户界面,必须要有错误处理程序,还不如先检查.
      

  5.   

    select case when col is null then '空' else '非空字符' end
    from tb 
    --LZ看看这个结果是什么,就知道了...