mysql timestamp类型 根据当前时间戳更新

注意到这个是因为一次事故。

一个简单的操作记录表,只记录了一个操作人,操作时间,操作结果。

当时为了演示效果,在生产环境中去修改,创建数据。

一顿操作猛如虎之后发现,所有改过的数据的创建时间都变成了当前时间,演示效果更不好了,还破坏了原本的数据。

经过研究发现,当数据类型是timestamp的时候,多了个根据当前时间更新

也就是下图的这个东西,将创建时间勾选了根据当前时间更新导致的问题。

所以呢。。

如果设置了CURRENT_TIMESTAMP为默认值,勾选了根据当前时间更新,表示每次更新这条数据的时候,该字段都会更新成当前时间

不勾选则表示当插入数据的时候,该字段默认值为当前时间

可以根据这个特性来生成【创建时间】和【更新时间】两个字段,且不需要代码来维护

CREATE TABLE `mytest` (
    `text` varchar(255) DEFAULT ‘‘ COMMENT ‘内容‘,
    `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ‘创建时间‘,
    `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ‘更新时间‘
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

原文地址:https://www.cnblogs.com/reded/p/11972392.html

时间: 2024-10-07 14:51:45

mysql timestamp类型 根据当前时间戳更新的相关文章

MySQL TIMESTAMP 类型加索引时出现的bug

数据库:MySQL,版本:5.1.45 查询语句1: select id, settlement_begin_time , settlement_end_time  from mkt_vendor_settlement_brief where settlement_begin_time >= '2017-09-01 00:00:00.0' and settlement_end_time <=  '2017-09-30 23:59:59.0': 结果: 查询语句2: select id, set

mysql timestamp类型字段的CURRENT_TIMESTAMP与ON UPDATE CURRENT_TIMESTAMP属性

timestamp有两个属性,分别是CURRENT_TIMESTAMP 和ON UPDATE CURRENT_TIMESTAMP两种,使用情况分别如下: 1.CURRENT_TIMESTAMP 当要向数据库执行insert操作时,如果有个timestamp字段属性设为 CURRENT_TIMESTAMP,则无论这个字段有木有set值都插入当前系统时间 2.ON UPDATE CURRENT_TIMESTAMP 当执行update操作是,并且字段有ON UPDATE CURRENT_TIMESTA

MySQL的timestamp类型自动更新问题

今天建了一个表,里面有一个列是timestamp类型,我本意是在数据更新时,这个字段的时间能自动更新.岂知对这个类型的值还不甚了解,导致出错.发现这个字段只是在这行数据建立的时候有值,在更新的却无变化. 查找资料,发现是我建表的语句有问题: 以下是代码片段: CREATE TABLE `test` ( `t1` timestamp NOT NULL default CURRENT_TIMESTAMP, `ww` varchar(5) NOT NULL ) ENGINE=InnoDB DEFAUL

MySQL的timestamp类型自动更新问题【转】

今天建了一个表,里面有一个列是timestamp类型,我本意是在数据更新时,这个字段的时间能自动更新.岂知对这个类型的值还不甚了解,导致出错.发现这个字段只是在这行数据建立的时候有值,在更新的却无变化. 查找资料,发现是我建表的语句有问题: 以下是代码片段: CREATE TABLE `test` (  `t1` timestamp NOT NULL default CURRENT_TIMESTAMP,  `ww` varchar(5) NOT NULL) ENGINE=MyISAM ; 而实际

mysql TIMESTAMP(时间戳)详解

TIMESTAMP的变体 1,TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP  在创建新记录和修改现有记录的时候都对这个数据列刷新 2,TIMESTAMP DEFAULT CURRENT_TIMESTAMP  在创建新记录的时候把这个字段设置为当前时间,但以后修改时,不再刷新它 3,TIMESTAMP ON UPDATE CURRENT_TIMESTAMP  在创建新记录的时候把这个字段设置为0,以后修改时刷新它 4

mysql中timestamp的自动生成与更新

转自:mysql中timestamp的自动生成与更新 MYSQL中TIMESTAMP类型可以设定默认值,就像其他类型一样.1.自动UPDATE 和INSERT 到当前的时间:表:---------------------------------Table Create Table ------ -------------------------- CREATE TABLE `t1` ( `p_c` int(11) NOT NULL, `p_time` timestamp NOT NULL DEF

MYSQL中TIMESTAMP类型的默认值

MYSQL中TIMESTAMP类型可以设定默认值,就像其他类型一样. 表: —————————————————————————————————————— t1      CREATE TABLE `t1` (                                                                             `p_c` int(11) NOT NULL,                                              

mysql中datetime和timestamp类型的区别

相同 显示 TIMESTAMP列的显示格式与DATETIME列相同.换句话说,显示宽度固定在19字符,并且格式为YYYY-MM-DD HH:MM:SS. 不同 范围 datetime 以'YYYY-MM-DD HH:MM:SS'格式检索和显示DATETIME值.支持的范围为'1000-01-01 00:00:00'到'9999-12-31 23:59:59'TIMESTAMP值不能早于1970或晚于2037 储存 TIMESTAMP 1.4个字节储存(Time stamp value is st

mysql中timestamp类型的应用

在开发过程中我们一般需要记住某条记录的创建时间,在MySQL中如果使用dateTime类型的话,无法设定默认值,我们可以采用timestamp类型来记录创建时间.但是随之而来的有个问题,比如说你的这个时间只想记录创建时间而不想随着记录update时发生更改(一般这种情况可能会发生在根据创建时间来做查询),而这个默认的timestamp为了提供方便是在update之后时间也会发生改变,可以通过以下语句来修改字段类型,强制让它update时不更改. ALTER TABLE  `tablename`