mysql timestamp自动更新时间问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql timestamp自动更新时间问题相关的知识,希望对你有一定的参考价值。

我需要插入一条记录,这条记录可以一直自动保持更新。数据表名为time ,字段有uid和clock,clock属性为timestamp,怎么执行一个代码使他一直保持更新 求教~在线等

参考技术A 设置一个触发器,在对该记录进行指定读取操作之前执行时间字段的更新,更新的具体时间值根据需要指定,这样每次读出的都是需要的时间。
具体在什么操作前执行更新看你的应用需求
参考技术B 时间戳是行版本号,也就是当该行数据变动时时间戳会自动更新
把时间戳单独与一个id建立不知道lz是什么意思?追问

我的想法有误,想使一个记录保持最新的时间有没有命令

本回答被提问者采纳
参考技术C update time set clock = now() where uid = 'xxx';

mysql如何让时间属性不自动更新

我的数据表中有一个timestamp属性字段,默认值是current_timestamp,这里有个弊端就是每次更新如果不给这个字段传入值,那么它是null,数据库会自动更新当前的时间,由于这个时间字段我是记录以前的信息,每次更新时间都在变,那么问题就大了,我想请教知友们... 我的数据表中有一个timestamp属性字段,默认值是current_timestamp,这里有个弊端就是每次更新如果不给这个字段传入值,那么它是null,数据库会自动更新当前的时间,由于这个时间字段我是记录以前的信息,每次更新时间都在变,那么问题就大了,我想请教知友们,我该如何设置才能使不传入时间,更新也不会改变当前的字段值? 展开 问题解决了,找了这么久关键字总算让我不再这范围的关键字文章中找到了。 其实我上面理解错了自动更新不是因为current_timestamp的存在,后面还要加上on update current 这句是更新的关键,所以我取消了这一句在数据库中只让默认值为current_timestamp这样就不会更新了

参考技术A 既然楼主已经解决了,
我就顺便粘贴点
测试的
sql
代码上来吧
首先是
插入

更新,
都会修改
TIMESTAMP
的情况:
create
table
testB
(
id
int
PRIMARY
KEY,
val
varchar(10),
dt
TIMESTAMP
);
INSERT
INTO
testB(id,
val)
VALUES(1,
'A');
INSERT
INTO
testB(id,
val)
VALUES(2,
'B');
SELECT
*
FROM
testB;
+----+------+---------------------+
|
id
|
val
|
dt
|
+----+------+---------------------+
|
1
|
A
|
2013-03-21
14:24:20
|
|
2
|
B
|
2013-03-21
14:24:21
|
+----+------+---------------------+
2
rows
in
set
(0.00
sec)
UPDATE
testB
SET
val
=
'C'
WHERE
id
=
1;
SELECT
*
FROM
testB;
+----+------+---------------------+
|
id
|
val
|
dt
|
+----+------+---------------------+
|
1
|
C
|
2013-03-21
14:28:02
|
|
2
|
B
|
2013-03-21
14:24:21
|
+----+------+---------------------+
2
rows
in
set
(0.00
sec)
然后是
仅仅插入时设置,
修改时不更新的情况
假如仅仅需要
插入时记录时间,
更新的时候不需要,
那么需要修改表定义方式:
TIMESTAMP
not
null
default
CURRENT_TIMESTAMP
create
table
testC
(
id
int
PRIMARY
KEY,
val
varchar(10),
dt
TIMESTAMP
not
null
default
CURRENT_TIMESTAMP
);
INSERT
INTO
testC(id,
val)
VALUES(1,
'A');
INSERT
INTO
testC(id,
val)
VALUES(2,
'B');
SELECT
*
FROM
testC;
+----+------+---------------------+
|
id
|
val
|
dt
|
+----+------+---------------------+
|
1
|
A
|
2013-03-21
14:35:12
|
|
2
|
B
|
2013-03-21
14:35:13
|
+----+------+---------------------+
2
rows
in
set
(0.00
sec)
UPDATE
testC
SET
val
=
'CC'
WHERE
id
=
1;
SELECT
*
FROM
testC;
+----+------+---------------------+
|
id
|
val
|
dt
|
+----+------+---------------------+
|
1
|
CC
|
2013-03-21
14:35:12
|
|
2
|
B
|
2013-03-21
14:35:13
|
+----+------+---------------------+
2
rows
in
set
(0.00
sec)

以上是关于mysql timestamp自动更新时间问题的主要内容,如果未能解决你的问题,请参考以下文章

MySQL数据库时间设置自动添加时间和自动更新时间

mysql如何让时间属性不自动更新

Mysql自动更新字段时间

mysql 怎么将时间自动更新自动加上72小时

timestamp ---自动更新修改时间 与 记录首次插入时间

mysql中timestamp自动更新和初始化