有关MYSQL建库时有关时间戳字段的问题

由于要做一个项目的后台,需要设计数模并建库,用的是PowerDesigner,数据库用的是MySQL5.5 ,在建物理模型的时候,用到了timestamp这个类型的字段(时间戳),一个是创建时间,一个是修改时间,建库成功后发现一个问题,怎么让CREATED字段在创建时生成时间戳,而ALTER字段在修改时自动生成时间戳呢?上网一查,果然也有一些小伙伴和我一样遇到了这样的问题,下面是解决办法:

MySQL 5.7之前的版本,如果直接这样写是会报错的:

CREATE TABLE `test_table` (  
`id` INT( 10 ) NOT NULL,  
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,  
`update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP  
) ENGINE = INNODB; 

有网友提供了这样的解决办法

CREATE TABLE `test_table` (  
`id` INT( 10 ) NOT NULL,  
`create_time` TIMESTAMP NOT NULL DEFAULT 0,  
`update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP  
) ENGINE = INNODB; 
  • 这样写的结果就是,修改时间在创建一条记录的时候也会初始化(其实也没毛病)

这时候插入和修改一条语句是这么写的

INSERT INTO test_table (id, create_time, update_time) VALUES (1, NULL, NULL); 
INSERT INTO test_table (id, update_time) VALUES (1, NULL);  
UPDATE test_table (id) VALUES (2); 

MySQL5.7之后可以直接这么写了

CREATE TABLE `test_table` (  
`id` INT( 10 ) NOT NULL,  
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,  
`update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP  
) ENGINE = INNODB;

事情就这么解决了!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值