我很少与负数打交道(个人财务除外),所以也许这就是我的知识存在差距的原因......
考虑以下内容,由对 SO ( How to achieve default value if column value is NULL? ) 中另一个用户提出的问题的回答提示:
-- Mysql Version 5.5.16
-- sql_mode = ''
DROP TABLE prices;
CREATE TABLE prices (price_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,price INT SIGNED NOT NULL DEFAULT -1);
INSERT INTO prices (price) VALUES (' '),(''),(NULL);
INSERT INTO prices (price_id) VALUES (NULL);
SELECT * FROM prices;
Expected output:
+----------+-------+
| price_id | price |
+----------+-------+
| 1 | -1 |
| 2 | -1 |
| 3 | -1 |
| 4 | -1 |
+----------+-------+
Actual output:
+----------+-------+
| price_id | price |
+----------+-------+
| 1 | 0 |
| 2 | 0 |
| 3 | 0 |
| 4 | -1 |
+----------+-------+
为什么?
中间答案:简而言之,如果您想确保插入默认值(当未设置 sql_mode 时),或者从 INSERT 中省略列 或者 显式插入默认值,即:INSERT INTO prices (price) VALUES(DEFAULT);
对我来说,这违背了默认值的精神!?!?
最佳答案
看起来像:
a.) 如果您为非空数字字段(非自动递增)提供 NULL 值,则默认值为零。
b.) 如果您不提供值(如最后一行),则使用给定的默认值 (-1)
http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html
关于mysql - 意外行为 INT NOT NULL DEFAULT -1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20702177/