今天遇到了一个很蛋疼的问题,关于mysql数据库的,一个设置了not null的整型字段,默认值自定义为 2,当我用insert语句向该字段插入null值的时候,为什么显示的是系统默认自动生成的整型默认值 0,而不是我自定义的默认值 2,非常纠结,如果我不对该字段做任何操作,就会自动填充自定义的默认值,为什么会这样,求高人指点,谢谢。

解决方案 »

  1.   

    null值 也是值, 即不会用默认值。如果你留空,则就会用默认值。
    这个很好理解 啊
      

  2.   

    但请问为甚么我插入null的时候,却显示的是 0?
      

  3.   

    把你的数据库结构导出成SQL语句,贴上来看下。
      

  4.   

    null 表示什么都没有
    既然对数值类型字段设置了not null
    那么什么都没有在数学中不就是 0 吗?
      

  5.   

    CREATE TABLE `order_tele` (
      `orderId` int(11) NOT NULL auto_increment,
      `dormArea` varchar(4) NOT NULL,
      `dormBase` varchar(5) NOT NULL,
      `dornNumber` varchar(20) NOT NULL default '0',
      `teleNumber` varchar(20) NOT NULL default '0',
      `computerType` varchar(20) NOT NULL,
      `bookTime` varchar(50) NOT NULL,
      `faulDesc` char(1) NOT NULL,
      `workId` int(10) unsigned NOT NULL default '3',
      `sex` char(2) NOT NULL default '男',
      PRIMARY KEY  (`orderId`)
    ) ENGINE=MyISAM AUTO_INCREMENT=24 DEFAULT CHARSET=utf8;
      

  6.   

    你若是自定议默认值了,别设为not NULL,插入的时候直接不带这字段,就是默认值
    不能为空意思就得须插入值哪怕是空值,插入值了默认值就没啥用了
      

  7.   

    workId` int(10) unsigned NOT NULL default '3'请问我向这个字段插入null值的时候,为什么会变成0?
      

  8.   

    楼主,看下面的手册
    http://cn.php.net/manual/zh/language.types.null.php
      

  9.   

    not null  你又要给它null 它不接受的
      

  10.   

    这个字段类型是int,你给它非int类型的东西当然是0了
      

  11.   

    我懂了。原来是我搞错了,嗯,一个设置了not null的字段,如果赋null值是会报错的,如果赋‘null’,字符串赋进整型,进行类型转换,变成0.
      

  12.   

    mysql 默认在你输入类型不匹配的时候采用最优值。
      

  13.   

    感觉就是mysql根据unsigned int和not null纠结之后的结果, 还是直接在表明后规定字段后由mysql采用默认值比较通用的感觉、