我有以下查询来设置列的默认值:
ALTER TABLE tableName ADD COLUMN testDate TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
但是我在新插入的行中看到了0000-00-00 00:00:00
的testDate列。
我希望看到当前的日期和时间。
有人可以解释为什么会这样吗?
答案 0 :(得分:2)
您在INSERT
查询中指定的数据会覆盖列的默认值,即如果没有为列设置数据,则默认值有效。
查看我的fiddle。
答案 1 :(得分:0)
默认值仅在查询中未定义值时才有效。
这将使用test的默认值:
INSERT INTO mytable(userid, email) VALUES(42, 'info@example.org');
虽然这会覆盖test的默认值:
INSERT INTO mytable(userid,email,test/*here is when it goes wrong, you shouldn't mention the column in your insert statement at all*/) VALUES(42,'bush@example.did','2001-09-11 00:00:00');