phpmyadmin 中的 MYSQL 触发器语法问题

Posted

技术标签:

【中文标题】phpmyadmin 中的 MYSQL 触发器语法问题【英文标题】:Trouble with MYSQL Trigger Syntax in phpmyadmin 【发布时间】:2015-12-02 22:38:43 【问题描述】:

我需要有关 phpmyadmin 中触发器语法的帮助。我有一个名为Log 的表格,其中包含以下列:

ID, Client_Name, Employee_Name, Start_Date, End_Date, Time. 

前三列与触发器无关。 Start_Date 是当前时间戳End_Date 是当前更新时间戳。

触发器是 AFTER UPDATE 触发器。它应该在 Time 列中计算 Start_Date 和 End_Date 之间的时间差。

【问题讨论】:

【参考方案1】:

manual 中解释了语法。您可以使用TIMEDIFF() 来计算经过的时间。

CREATE TRIGGER trig1 BEFORE UPDATE ON Log FOR EACH ROW
 SET NEW.time=TIMEDIFF(NEW.End_Date,NEW.Start_Date);

编辑: 上面的触发器需要BEFORE 触发器来操作数据。鉴于 OP(更新单列)中提到的预期用途,这应该没问题。

【讨论】:

好的,我用 BEFORE 重写了它,现在我得到了另一个我无法弄清楚的错误... "#1064 - 您的 SQL 语法有错误;请查看相应的手册到您的 mysql 服务器版本,以便在第 4 行的“END”附近使用正确的语法“CREATE TRIGGER trig1 BEFORE UPDATE ON Log FOR EACH ROW BEGIN SET NEW.time=TIMEDIFF(NEW.End_Date,Start_Date) END 抱歉我的回复方式,不太习惯使用 Enter 作为发送回复,所以我经常编辑我的 cmets.. @DeanIvanov,我删除了BEGIN ... END,这样您就不会遇到分隔符问题。现在就试一试吧。 谢谢,现在效果很好 :) 如果我想稍后将其更改为在几分钟内显示,我应该在最后添加 24*60,对吗?

以上是关于phpmyadmin 中的 MYSQL 触发器语法问题的主要内容,如果未能解决你的问题,请参考以下文章

phpmyadmin mysql 触发语法错误

尝试编写 MySQL 触发器以替换 phpmyadmin 上的 CHECK 约束时出现语法错误

更新前的 MySQL 使用 PhpMyAdmin 触发插入语法错误

TRIGGER 语法错误 mysql 说 #1303 - 无法从另一个存储的例程中创建触发器 - phpmyadmin

在 phpmyadmin 上插入触发器

Phpmyadmin 在“END”附近创建触发器语法错误