[开发感悟]Mysql设置NOT NULL 在pdo插入为空时候返回false

jackxiang 2009-5-4 10:55 | |
  `source` char(255) NOT NULL,
  `score` int(11) NOT NULL,
        

Mysql设置NOT NULL 在pdo插入该字段source为空时候返回false,初看你就奇怪了,为何设置的时候为not null,但是在插入的时候会为null呢?
     是这样的,当时开发时候的需求不很明显,但是最后在开发收尾的时候发现这个字段可有可无,而且我们提供的是接口调用,人家就会问了,你这个参数填写什么,而很有可能就说那个参数啊,可以为空啊,呵呵,这下好了,那个字段刚好可能会出现NULL,和NOT NULL冲突,于是插入数据库出现返回false,而我们又是接口调用,尽量做到给用户返回成功的代码,于是这个插入数据库错误的问题可能会隐藏,最后解决办法是将数据库source字段改为可以为null!



ALTER TABLE `a` CHANGE `a` `a` INT( 11 ) NOT NULL DEFAULT NULL
ALTER TABLE `a` CHANGE `a` `a` INT( 11 ) NULL DEFAULT NULL


http://www.neatcn.com/?action=tags&item=pdo

但本人有不同看法。。。

  `source` char(255) NOT NULL,
  `score` int(11) NOT NULL,
        

Mysql设置NOT NULL 在pdo插入该字段source为空时候返回false,初看你就奇怪了,为何设置的时候为not null,但是在插入的时候会为null呢?
     是这样的,当时开发时候的需求不很明显,但是最后在开发收尾的时候发现这个字段可有可无,而且我们提供的是接口调用,人家就会问了,你这个参数填写什么, 而很有可能就说那个参数啊,可以为空啊,呵呵,这下好了,那个字段刚好可能会出现NULL,和NOT NULL冲突,于是插入数据库出现返回false,而我们又是接口调用,尽量做到给用户返回成功的代码,于是这个插入数据库错误的问题可能会隐藏,最后解 决办法是将数据库source字段改为可以为null!




ALTER TABLE `a` CHANGE `a` `a` INT( 11 ) NOT NULL DEFAULT NULL
ALTER TABLE `a` CHANGE `a` `a` INT( 11 ) NULL DEFAULT NULL

--------------------------------------------------------------------------------

上面这段我还是觉得有问题的,一般情况话,如果设置了NOT NULL,那么default 还是设为0吧。除非你的0在系统中是特殊值。

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/1750/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2010-1-25 22:20
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]