我在表用户中有两列,即registerDate and lastVisitDate由日期时间数据类型组成。我想做以下事情。
将registerDate的默认值设置为MySQL NOW() 将lastVisitDate的默认值设置为0000-00-00 00:00:00而不是默认使用的null。 因为该表已经存在并且具有现有记录,所以我想使用Modify表。我试过使用下面的两段代码,但是都没有用。
ALTER TABLE users MODIFY registerDate datetime DEFAULT NOW() ALTER TABLE users MODIFY registerDate datetime DEFAULT CURRENT_TIMESTAMP; 它给我错误: ERROR 1067 (42000): Invalid default value for 'registerDate'
我可以在MySQL中将默认的datetime值设置为NOW()吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
从MySQL 5.6.5开始,您可以将DATETIME类型与动态默认值一起使用:
CREATE TABLE foo ( creation_time DATETIME DEFAULT CURRENT_TIMESTAMP, modification_time DATETIME ON UPDATE CURRENT_TIMESTAMP ) 甚至结合两个规则:
modification_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 参考: http : //dev.mysql.com/doc/refman/5.7/en/timestamp-initialization.html http://optimize-this.blogspot.com/2012/04/datetime-default-now-finally-available .html
在5.6.5之前,您需要使用TIMESTAMP数据类型,只要修改记录,该数据类型就会自动更新。但是,不幸的是,TIMESTAMP每个表只能存在一个自动更新的字段。
CREATE TABLE mytable ( mydate TIMESTAMP ) 参见:http : //dev.mysql.com/doc/refman/5.1/en/create-table.html
如果要防止MySQL将timestamp值更新为on UPDATE(以便仅在上触发INSERT),则可以将定义更改为:
CREATE TABLE mytable ( mydate TIMESTAMP DEFAULT CURRENT_TIMESTAMP )来源:stack overflow