问题
I'm completely new to databases and SQL.
I have a column marked NOT NULL.
When I forget to give a value to that column when doing an INSERT, it inserts a 0 value in that column.
Is there anything I can do to make it return an error instead of changing the NULL to 0?
回答1:
You want to have a look at the SQL_MODE configuration. It allows you to define how strict MySQL handles such things. By default it is pretty lenient which is not what I usually want. It also depends on the data type, especially with Dates it is less than optimal by default.
I personally go for STRICT_ALL_TABLES usually.
See the MySQL manual (5.0) here:
http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html
回答2:
There are two possible reasons for this:
- You have a default value defined for that column
- Your column is
INT NOT NULLand castsNULLtoINT, which results in0
The second situation seems to be the case here, obviously. If you want to get an error instead, you could change the SQL_MODE to be strict. An other possibility is to do the input validation in your progam rather than leaving it to SQL.
回答3:
I guess you have a DEFAULT value for that column
来源:https://stackoverflow.com/questions/4346244/why-is-mysql-changing-null-to-zero