mysql中对于UPDATE_TIME字段我们有时候会设置ON UPDATE CURRENT_TIMESTAMP,表示在数据库数据有更新的时候UPDATE_TIME的时间会自动更新(如果数据库数据值没有变化的话,UPDATE_TIME是不会自动更新的)。那么假设一个场景,我们有一个长事务有10秒,在进入事务第2秒的时候我们执行了一个update操作,然后往下继续执行,直到第10秒,事务提交。此时数据库记录的时间是执行update的时候的第2秒的时间点呢?还是事务提交后的第10秒的时间点?
事务提交完成后,保存到数据库的时间是执行update的第2秒的时间点。
如果UPDATE_TIME只是用来记录更新时间,那么这个自动更新的时间点倒是没有什么影响。但是如果想要用UPDATE_TIME来作为数据同步(比如同步到另一个库,或者es之类的)的依据,那么就不能够这样定义。因为我们使用UPDATE_TIME作为更新,一般也是要求准实时同步,假如一个事务比较长,在事务还没提交过程中我们已经记录了更新的时间,等事务提交后,这个UPDATE_TIME的时间我们是没有同步到的。举个栗子:
一个长事务的开始时间为12:00:00,结束时间为12:00:10,
在12:00:02的时候执行了update操作,此时数据库的UPDATE_TIME的时间还是12:00:00,因为事务还没提交。
与此同时有个定时任务在扫描这段时间内的数据,比如12:00:00到12:00:03,没有数据,因此将12:00:03记录下来,下次从这个时间点继续往后扫描,等12:00:10时长事务提交,此时数据库中该条数据的UPDATE_TIME值为12:00:02,但是定时任务扫描不会再扫描中这条数据了,就会导致同步数据不完整。对这种情况,我们只能够在程序中进行设置UPDATE_TIME的值,而不应该通过数据库本身设置ON UPDATE CURRENT_TIMESTAMP
问题描述mysql中对于UPDATE_TIME字段我们有时候会设置ON UPDATE CURRENT_TIMESTAMP,表示在数据库数据有更新的时候UPDATE_TIME的时间会自动更新(如果数据库数据值没有变化的话,UPDATE_TIME是不会自动更新的)。那么假设一个场景,我们有一个长事务有10秒,在进入事务第2秒的时候我们执行了一个update操作,然后往下继续执行,直到第10秒,事务...
表示每次
更新
这条数据的
时
候,该字段都会
更新
成当前
时间
这两个操作是
mysql
数据库
本身在维护,所以可以根据这个特性来生成【创建
时间
】和【
更新
时间
】两个字段,且不需要代码来维护
CREATE TABLE `mytest` (
`text` varchar(255) DEFAULT '' COMMENT '内容',
`create_time`
timestamp
NOT NULL DEFAULT CUR
转自:http://blog.csdn.net/dingding_12345/article/details/47905715On Delete和On
Update
都有Restrict,No Action, Cascade,Set Null属性。现在分别对他们的属性含义做个解释。
ON DELETE
restrict(约束):当在父表(即外键的来源表)中删除对应记录
时
,首先检查该记录是否有对应外
文章目录 第四十四章 外键关键字 - On
Update
用法详解默认
第四十四章 外键关键字 - On
Update
指定当外键表中记录的键值被
更新
并且该记录被当前表中的记录引用
时
,该外键在当前表中应引起的操作。
要指定当引用记录的键值在外部表中
更新
时
在当前表中发生的情况,请使用以下语法:
ForeignKey keyname(key_props) References pkg.class(ref_index) [ On
Update
= on
update
];
其中on
update
是下列之一:
在部署程序
时
遇到的一个问题,
MySQL
定义举例如下: 代码如下:CREATE TABLE `example` ( `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, `created`
TIMESTAMP
NOT NULL DEFAULT
CURRENT
_
TIMESTAMP
, `last
Update
d`
TIMESTAMP
NOT NULL ON
UPDATE
CURRENT
_
TIMESTAMP
, PRIMARY KEY (`id`)) ENGINE=InnoDB;这段SQL是我从项目中摘取出来的,在测试机器上一切正常,但是部署到生产机器上My
所以以 代码如下:create_time datetime default now() 的形式
设置
默认值是不可能的。 代替的方案是使用
TIMESTAMP
类型代替DATETIME类型。
CURRENT
_
TIMESTAMP
:当我
更新
这条记录的
时
候,这条记录的这个字段不会改变。
CURRENT
_
TIMESTAMP
ON
UPDATE
CURRENT
_
TIMESTAMP
:当我
更新
这条记录的
时
候,这条记录的这个字段将会改变。即
时间
变为了
更新
时
候的
时间
。(注意一个
UPDATE
设置
一个列为它已经有的值,这将不引起
TIMESTAMP
列被
更新
,因为如果你
设置
一个列为它当前的值,
MySQL
为了效率而忽略更改
数据库
外键定义的一个可选项,用来
设置
当主键表中的被参考列的数据发生变化
时
,外键表中响应字段的变换规则的。
update
是主键表中被参考字段的值
更新
,delete则是指在主键表中删除一条记录:
on
update
和 on delete 后面可以跟的词语有四个
no action , set null , set default ,cascade
no action 表示 不做任何操作...
1. on delete cascade:删除 A 表的数据
时
,对应 B 表的数据也会删除
2. on delete set null:删除 A表的数据
时
,对应 B 表的外键字段置为空(前提是该字段可以为空)
如果添加外键
时
没加上面内容,删除 A 表的数据
时
,如果对应 B 表有数据就会报错
二、on
update
1. on
update
cascade:
更新
A 表数据的 id
时
,对应 B 表的外键字段也会
更新
2. on upda..
这是
数据库
外键定义的一个可选项,用来
设置
当主键表中的被参考列的数据发生变化
时
,外键表中响应字段的变换规则的。
update
则是主键表中被参考字段的值
更新
,delete是指在主键表中删除一条记录:
on
update
和 on delete 后面可以跟的词语有四个
no action , set null , set default ,cascade
no action 表示 不做任何操作,
OnInit
Update
、On
Update
、OnDraw与OnPaint!
OnDraw,一般是收到WM_PAINT消息
时
调用,所以应用程序一般通过Invalidate产生WM_PAINT消息来间接调用OnDraw。当窗体无效等情况下,window也会产生WM_PAINT消息,这
时
OnDraw 也被间接调用。
On
Update
是CView提供的一个方法,一般当文档修改
时
调用,应用程序
日常开发总结:
MySQL
函数:ON
UPDATE
CURRENT
_
TIMESTAMP
与
CURRENT
_
TIMESTAMP
如表的创建语句:重点在于
update
d_time字段的函数
create table test(
id int,
`
update
d_time` datetime NOT NULL DEFAULT
CURRENT
_
TIMESTAMP
ON
UPDATE
CURRENT
_
TIMESTAMP
COMMENT '
更新
时间
',
`created_time` datetime NOT NULL
目录前言通过建表语句来指定通过 `navicat` 的可视化界面直接操作
mysql
数据库
有
时
候会给表中加上 create_time 和
update
_time 这两个字段,这两个字段可以
设置
为 datetime 或
timestamp
类型,那么如何为其
设置
默认值并根据当前
时间
来
更新
呢?
如何做到通过
mysql
数据库
的
设置
来实现上述字段的自动化填充呢,而不用在 sql 语句中手动来填充呢。解决办法如下
通过建表语句来指定
CREATE TABLE `test` (
`text` var
"on
update
current
_
timestamp
" 是一种
MySQL
数据库
中的功能,它可以自动
更新
一条记录的
时间
戳为当前
时间
戳。在创建一个表
时
,可以将一个DATETIME或
TIMESTAMP
类型的列
设置
为"on
update
current
_
timestamp
",这样当该记录发生
更新
时
,该列的值就会自动
更新
为当前
时间
戳。
举个例子,假设有一个名为"test_table"的表,其中有一个名为"
update
_time"的列,它被
设置
为"on
update
current
_
timestamp
"。如果我们执行一条
UPDATE
语句来
更新
一条记录,那么"
update
_time"列的值将自动
更新
为当前
时间
戳。这在记录数据的变更
时间
时
非常有用。
leo_qiu_s:
阿里云elasticsearch实践(最大限度提高写入速度)
51iwowo:
JSONObject使用方法
HarveyHarveyHarvey:
Myeclipse出现can not be found.please check the location and try again
哦-是我:
ueditor使用配置总结
yufeng005: