mysql如何让时间属性不自动更新
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 怎么将时间自动更新自动加上72小时
参考技术A 看看mysql文档里面关于timestamp的说明会清楚一些这块是容易弄错,建表的第一列timestamp属性的字段如果不显示给默认值,都会自动更新.
http://dev.mysql.com/doc/refman/5.1/zh/column-types.html#datetime
11.3.1.1.
自MySQL
4.1以来的TIMESTAMP属性
我觉得一般用date就够用了
以上是关于mysql如何让时间属性不自动更新的主要内容,如果未能解决你的问题,请参考以下文章