2010-12-03 109 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。