记录一次建表错误问题:invalid ON UPDATE clause for 'start_time' column

记录一次建表错误问题

目录

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

异常代码

DROP TABLE IF EXISTS `tb_order_status`;
CREATE TABLE `tb_order_status` (
  `order_id` bigint(20) NOT NULL COMMENT '订单id',
  `status` int(1) DEFAULT NULL COMMENT '状态:1、未付款 2、已付款,未发货 3、已发货,未确认 4、交易成功 5、交易关闭 6、已评价',
  `create_time` datetime DEFAULT NULL COMMENT '订单创建时间',
  `payment_time` datetime DEFAULT NULL COMMENT '付款时间',
  `consign_time` datetime DEFAULT NULL COMMENT '发货时间',
  `end_time` datetime DEFAULT NULL COMMENT '交易完成时间',
  `close_time` datetime DEFAULT NULL COMMENT '交易关闭时间',
  `comment_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '评价时间',
  PRIMARY KEY (`order_id`),
  KEY `status` (`status`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='订单状态表';

异常原因

通过查询语句

show variables like 'innodb_version';

可知当前mysql版本为5.5.62,查阅网上资料,为MySQL 5.5 每个表只允许一个列的默认值根据时间戳生成时间(但实际上这个表也确实只有一个列的默认值是更具时间戳生成的,依然报错,这里有点不太懂,希望朋友们解惑)

解决办法

1.更换5.6及以上版本mysql

2.使用触发器替代

  `comment_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '评价时间',

中的ON UPDATE CURRENT_TIMESTAMP
代码如下:

DROP TRIGGER IF EXISTS `tb_order_status`;

DELIMITER// 
CREATE TRIGGER `tb_order_status` BEFORE UPDATE ON `tb_order_status` 
FOR EACH ROW SET new.`comment_time` = NOW() 
//
DELIMITER ;

补充

不太熟悉 语句中DELIMITER 的用法,简单查询了一下用法

DELIMITER实际上是告诉Mysql解释器语句是否结束的标志,而DELIMITER// 表示重新定义//为结束标志。通常是有时候希望输入较多语句,且语句中含有分号才会这么做,比如:

mysql> delimiter //   
mysql> CREATE FUNCTION `SHORTEN`(S VARCHAR(255), N INT)   
mysql>     RETURNS varchar(255)   
mysql> BEGIN   
mysql> IF ISNULL(S) THEN   
mysql>     RETURN '';   
mysql> ELSEIF N<15 THEN   
mysql>     RETURN LEFT(S, N);   
mysql> ELSE   
mysql>     IF CHAR_LENGTH(S) <=N THEN   
mysql>    RETURN S;   
mysql>     ELSE   
mysql>    RETURN CONCAT(LEFT(S, N-10), '...', RIGHT(S, 5));   
mysql>     END IF;   
mysql> END IF;   
mysql> END;//   

但此次遇到的错误,并没含有较多分号,不需要DELIMITER如下改正亦可

DROP TRIGGER IF EXISTS `tb_order_status`;

CREATE TRIGGER `tb_order_status` BEFORE UPDATE ON `tb_order_status` 
FOR EACH ROW SET new.`comment_time` = NOW();

但是网上查到的解决方法语句里都有DELIMITER关键字,不知是否我理解有所遗漏,希望朋友们可以指出

参考: https://blog.csdn.net/miracleoa/article/details/100033771
https://www.cnblogs.com/nickup/p/6628892.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Delphi 7.1 Update Release Notes=======================================================This file contains important supplemental and late-breakinginformation that may not appear in the main productdocumentation, and supersedes information contained in otherdocuments, including previously installed release notes.Borland recommends that you read this file in its entirety.NOTE: If you are updating a localized version of Delphi 7, visit the Borland Registered User web site to obtain a localized readme file that may contain important late- breaking information not included in this readme file.IMPORTANT: Delphi must be closed before installing this update. =====================================================CONTENTS * INSTALLING THIS UPDATE * UPDATING LOCALIZED VERSIONS OF DELPHI 7 * KNOWN ISSUES * ISSUES ADDRESSED BY THIS UPDATE - IDE - CORE DATABASE - DATASNAP - DBGO (ADO COMPONENTS) - dbExpress - dbExpress COMPONENTS AND DB VCL - dbExpress CORE DRIVER AND METADATA - dbExpress VENDOR ISSUES - dbExpress CERTIFICATION - WEB SNAP - ACTIVEX - COMPILER - RTL - VCL - THIRD PARTY - BOLD FOR DELPHI * VERIFYING THAT THE UPDATE WAS SUCCESSFUL * FILES INSTALLED BY THIS UPDATE =======================================================INSTALLING THIS UPDATE* This update can not be applied to Delphi 7 Architect Trial version. * This update can not be removed after it is installed.* You will need the original Delphi 7 installation CD available to install this update.* To install this update from the CD, insert the CD, and launch the d7_ent_upd1.exe file appropriate for your locale.* To install this update from the Web, double-click the self-executing installation file and follow the prompts. * The Delphi 7 documentation PDF files are available on the update CD.========================================================UPDATING LOCALIZED VERSIONS OF DELPHI 7* This update can be applied only to the English version of Delphi 7. There are separate updates for the German, French and Japanese ver

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值