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_TIMESTAMP属性。则字段无论值有没有变化,他的值也会跟着更新为当前UPDATE操作时的时间。

TIMESTAMP的变体

1.TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

在创建新记录和修改现有记录的时候都对这个数据列刷新

2.TIMESTAMP DEFAULT CURRENT_TIMESTAMP

在创建新记录的时候把这个字段设置为当前时间,但以后修改时,不再刷新它

3.TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

在创建新记录的时候把这个字段设置为0,以后修改时刷新它

4.TIMESTAMP DEFAULT ‘yyyy-mm-dd hh:mm:ss’ ON UPDATE CURRENT_TIMESTAMP

在创建新记录的时候把这个字段设置为给定值,以后修改时刷新它

使用触发器来替代:

CREATE TABLE `example` (
  `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  `created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `lastUpdated` DATETIME NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB;
DROP TRIGGER IF EXISTS `update_example_trigger`;
DELIMITER //
CREATE TRIGGER `update_example_trigger` BEFORE UPDATE ON `example`
 FOR EACH ROW SET NEW.`lastUpdated` = NOW()
//
DELIMITER ;
时间: 2024-08-08 14:35:17

mysql timestamp类型字段的CURRENT_TIMESTAMP与ON UPDATE CURRENT_TIMESTAMP属性的相关文章

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 text类型字段存储提示错误信息 String data,right truncated:1406 Data too long for column 'content' at row 1

String data,right truncated:1406 Data too long for column 'content' at row 1 当Mysql提示如下时: 1.首先查看存入的文本内容的大小,根据内容大小设置类型 如果超出,根据大小进行更换类型 2.如果还是超出那可能是Mysql根据配置文件限制Server接受数据包大小,有时候大的插入和更新会受max_allowed_packet参数限制,导致写入或者更新失败. 查看目前配置: 代码如下: 以上说明目前的配置是:60 M

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_TIME

mysql 时间类型字段的分析

日期类型                存储空间               日期格式                                           日期范围------------      ---------                ---------------------                             -----------------------------------------datetime         8 bytes  

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类型 根据当前时间戳更新

注意到这个是因为一次事故. 一个简单的操作记录表,只记录了一个操作人,操作时间,操作结果. 当时为了演示效果,在生产环境中去修改,创建数据. 一顿操作猛如虎之后发现,所有改过的数据的创建时间都变成了当前时间,演示效果更不好了,还破坏了原本的数据. 经过研究发现,当数据类型是timestamp的时候,多了个根据当前时间更新 也就是下图的这个东西,将创建时间勾选了根据当前时间更新导致的问题. 所以呢.. 如果设置了CURRENT_TIMESTAMP为默认值,勾选了根据当前时间更新,表示每次更新这条数

MySQL的timestamp类型自动更新问题

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

MYSQL中TIMESTAMP类型的默认值

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

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

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