Mysql 5.5以下不能同时创建2个timestamp属性字段

描述:

mysql表里面都有创建时间字段和更新时间字段
但是mysql数据库只允许一个字段用timestamp
所以给更新字段添加如下触发器。亲测有效!!!


我们尝试以下几个语句:

 CREATE TABLE temp1
(
 id INT(11) PRIMARY KEY AUTO_INCREMENT,
 name VARCHAR(10),
 DataChange_CreatedTime timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
CREATE TABLE temp2
(
 id INT(11) PRIMARY KEY AUTO_INCREMENT,
 name VARCHAR(10),
 DataChange_CreatedTime timestamp NULL DEFAULT CURRENT_TIMESTAMP,
 DataChange_LastTime timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

发现temp1通过;temp2失败:

测试不通过。报ERROR 1293 (HY000)错误。(完整错误信息:ERROR 1293 (HY000): Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause)

建表的时候只能存在一个字段为 TIMESTAMP 属性,所以:

CREATE TABLE temp2
(
 id INT(11) PRIMARY KEY AUTO_INCREMENT,
 name VARCHAR(10),
 DataChange_CreatedTime timestamp NULL DEFAULT CURRENT_TIMESTAMP,
 DataChange_LastTime timestamp NULL DEFAULT '0000-00-00 00:00:00'
);

– 添加触发器

CREATE TRIGGER `update_interface_temp2_trigger` 
BEFORE 
UPDATE ON `temp2`
 FOR EACH ROW 
 SET NEW.`DataChange_LastTime` = NOW();

用于对触发器语句各个字段的理解。

CREATE TRIGGER trigger_name
trigger_time
trigger_event ON tbl_name
FOR EACH ROW
trigger_stmt

其中:

trigger_name:标识触发器名称,用户自行指定;
trigger_time:标识触发时机,取值为 BEFORE 或 AFTER;
trigger_event:标识触发事件,取值为 INSERT、UPDATE 或 DELETE;
tbl_name:标识建立触发器的表名,即在哪张表上建立触发器;
trigger_stmt:触发器程序体,可以是一句SQL语句,或者用 BEGIN 和 END 包含的多条语句。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值