ITPub博客

首页 > Linux操作系统 > Linux操作系统 > [转]MySQL的datetime设置当前时间为默认值及 triger 一例

[转]MySQL的datetime设置当前时间为默认值及 triger 一例

原创 Linux操作系统 作者:bulletming 时间:2019-05-06 09:24:04 0 删除 编辑

转自 http://qroom.blogspot.com/2007/02/mysqldatetime.html

由于MySQL目前字段的默认值不支持函数,所以以
create_time datetime default now()

的形式设置默认值是不可能的。

代替的方案是使用TIMESTAMP类型代替DATETIME类型。

TIMESTAMP列类型自动地用当前的日期和时间标记INSERT或UPDATE的操作。
如果有多个TIMESTAMP列,只有第一个自动更新。
自动更新第一个TIMESTAMP列在下列任何条件下发生:
  1. 列值没有明确地在一个INSERT或LOAD DATA INFILE语句中指定。

  2. 列值没有明确地在一个UPDATE语句中指定且另外一些的列改变值。(注意一个UPDATE设置一个列为它已经有的值,这将不引起TIMESTAMP列被更新,因为如果你设置一个列为它当前的值,MySQL为了效率而忽略更改。)

  3. 你明确地设定TIMESTAMP列为NULL.

  4. 除第一个以外的TIMESTAMP列也可以设置到当前的日期和时间,只要将列设为NULL,或NOW()。



另外在5.0以上版本中也可以使用trigger来实现此功能。

create table test_time (
id int(11),
create_time datetime
);

delimiter |

create trigger default_datetime before insert on test_time
for each row
if new.create_time is null then
set new.create_time = now();
end if;|

delimiter ;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/82392/viewspace-526437/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2004-05-31

  • 博文量
    121
  • 访问量
    91247