添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
insert into test (tid,uptime,hobby) values(null,null,null);
  • 查看数据库数据
    在这里插入图片描述
    我们看到数据插入成功,但是uptime字段显示为 null
  • 我们再插入一条数据,如下:
insert into test (tid,uptime,hobby) values(null,current_timestamp,null);
  • 查看数据库数据如下:
    在这里插入图片描述
    我们看到第二条数据插入成功了,并且时间为 当前插入的时间
  • 下面我们更新一下字段看 时间是否会自动维护
update test set hobby='篮球'  where tid < 4;
  • 我们看效果
    在这里插入图片描述
    时间并没有自动更新,还是我们插入的时间,并不是修改的时间。
  • 我们首先手动更新一下时间:
update test set uptime = current_timestamp where tid < 10;
  • 效果如图:
    在这里插入图片描述

当我们设置timestamp类型为current_timestamp时,系统会自动获取当前修改或者创建时间,但是不糊自动维护。

那么问题来了?

如何让timestamp类型自动维护

  1. 我们重新传建一个是数据库
create table test2(
	pid int primary key  auto_increment,
	uptime timestamp null default current_timestamp on update current_timestamp,
	hobby varchar(30)
  1. 我们先看一下创建后的表结构:
show create table test2;
 

我们注意一下 uptime 字段,可以为空,默认时间为current_timestamp, on update curret_timestamp设置可以使记录发生改变的时候时间自动改变。

  • 插入一条没有默认时间的数据数据
insert into test2 values(null,null,null);

查看表结构
在这里插入图片描述
我们可以看到当我们没有设置默认值的时候时间默认为null

我们再插入一条带默认时间的数据

insert into test2 values(null,current_timestamp,null);

如图:
在这里插入图片描述
我们可以看到 有两条数据,一条有默认时间一条没有。

  • 下面我们修改一下 两条记录,看时间是否会自动维护
update test2 set hobby='篮球' where pid < 5;

我们可以看到时间字段 在 自动维护,之前默认值为空的时候,在修改记录之后也会自动将时间改为 修改时间。

最后的完善

我们已经可以做到 时间自动维护了,还有一个 小缺点,就是在刚开始插入时间时,我们没有传入默认时间的话,初始值为null,只有我们修改这条记录的时候他才会自动记录时间。

  • 完善方案: 在创建数据库的时候设置 uptime字段为 not null
create table test3(pid int primary key auto_increment,uptime timestamp not null default current_timestamp on update current_timestamp);

表结构如下:
在这里插入图片描述

这样我们就会在创建该记录时候强制传入一个时间,并在修改的时候自动维护。

需求描述:现需要数据库中一个字段来记录当前记录的最近修改时间或者创建时间,并自动更新维护。timestamp类型的使用示例如下:创建一个数据库,并指定 uptime为 timestamp类型create table test( tid int primary key auto_increment, uptime timestamp, hobby varchar(20));...
通常表中会有一个Create date 创建日期的字段,其它数据库均有默认的选项。MySQL也有默认timestamp,但在MySQL中,不仅是插入就算是修改也会更新timestamp! 这样一来,就不是创建日期了,当作更新日期来使用比较好! 因此在MySQL中要记录创建日期还得使用datetime 然后使用NOW() 函数完成!1,TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP  在创建新记录和修改现有记录的时候都对这个数据列刷新2,TIMESTAMP DEFAULT CURRENT_TIMESTAMP 
INSERT INTO test(id) VALUES(1) ON DUPLICATE KEY UPDATE id=2 上述的 sql 语句在遇到重复的主键时,将会中断插入操作改为更新操作。 时间戳自动更新 有的时候,我们在表中会维护一个类似于 updateTime 的字段,每当对记录 datetime类型在没有默认的情况下是不会自动赋的; 在开发阶段,不想传这两个,但又想不为null,所以就需要用到CURRENT_TIMESTAMP这个参数。 创建时间: 一般是在创建数据时才会赋,使用SQL的话,就需要在字段上添加默认: DEFAULT CURRENT_TIMESTAMP(0) 使用Navicat的情况下,.
文章目录1. 设置“ON UPDATE CURRENT_TIMESTAMP”2. 取消“ON UPDATE CURRENT_TIMESTAMP” 1. 设置“ON UPDATE CURRENT_TIMESTAMP”   TIMESTAMP和 DATETIME列可以自动初始化并更新为当前日期和时间(即当前时间戳),TIMESTAMP或 DATETIME列定义可以为默认自动更新(一个而不是另一个)或两者都不指定当前时间戳,不同的列可以具有不同的自动属性组合,可以使用 DEFAULT CURRENT_TIM
业务场景: 数据表中有一个update_time字段,设置timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,使用模型中的update()或save()方法【以phalcon为例】,发现无法更新。 问题解析: 在数据库中更改数据,发现更新字段会更改,判定是代码中的问题。 使用sql原生语句,结果同上。 使用模型中的update()方法,发现不能更新。 public function test($field_n
CREATE TABLE `table1` ( `id` int(11) NOT NULL, `createtime` timestamp NULL default CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 如果是在navicat下操作的话,设置字段的类型为times...
可以使用 MySQL 中的 TIMESTAMP 类型和 ON UPDATE CURRENT_TIMESTAMP 属性来实现修改时间自动更新。具体操作如下: 1. 在表中添加一个 TIMESTAMP 类型的列,用于存储修改时间。 2. 在该列上设置 ON UPDATE CURRENT_TIMESTAMP 属性,表示在更新该行数据时,自动将该列的更新为当前时间。 例如,创建一个名为 users 的表,其中包含 id、name 和 updated_at 三个列,其中 updated_at 列用于存储修改时间,可以使用以下 SQL 语句: CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(50), updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 这样,在更新 users 表中的数据时,updated_at 列的自动更新当前时间。
Unable to make field private final byte[] java.lang.String.value accessible: module java.base does n arbalest1080: jdk17不行,改成jdk8就好了 java自定义lock锁 流沙QS: 不加锁,哪来的解锁?表情包 Unable to make field private final byte[] java.lang.String.value accessible: module java.base does n wink3: 有用。解决 java自定义lock锁 盖世神龙: 这个有点 bug , 如果去除 new Thread 中的 lock 会报错 安卓改变进度条的颜色progressbar ITzhongzi: 很久很久以前,刚刚毕业,忽略了细节……