2010-12-03 103 views
0

我完全不熟悉数据库和SQL。我有一个列NOT NULL列。
当我在执行INSERT时忘记给该列赋值时,它会在该列中插入一个0值。
有什么我可以做的,使其返回一个错误,而不是将NULL更改为0?为什么MySQL将null更改为零?

+1

该列有默认值吗? – 2010-12-03 14:04:05

+0

它是一个整数列吗?你没有传递一个价值,或者你认为价值是空的? – 2010-12-03 14:04:32

回答

4

你想看看在SQL_MODE配置的默认值。它允许你定义MySQL如何严格处理这些事情。默认情况下它非常宽松,这不是我通常想要的。它也取决于数据类型,特别是在日期默认情况下它不是最优的。

我个人通常会去STRICT_ALL_TABLES

见MySQL手册(5.0)这里:

http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html

0

我想你该列

1

这有两个可能的原因:

  • 您有该列
  • 你列定义的默认值是INT NOT NULL,并将NULL转换为INT,结果为0

显然,第二种情况似乎就是这种情况。如果你想得到一个错误,你可以将SQL_MODE更改为严格。另一种可能性是在你的程序中进行输入验证,而不是把它留给SQL。