2015-09-07 75 views
2

我需要帮助您使用phpmyadmin中的触发器语法。我有一个名为Log有以下几列表:phpmyadmin中的MYSQL触发器语法问题

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中提到的预期用途(更新单列)在这应该罚款。

+0

好吧,我用BEFORE重写了它,现在我得到了另一个我无法弄清楚的错误......“#1064 - 你的SQL语法错误;检查对应于你的MySQL服务器版本的手册为正确的语法以线4" 附近使用 'END''CREATE TRIGGER TRIG1 BEFORE UPDATE登录FOR EACH ROW BEGIN SET NEW.time = TIMEDIFF(NEW.End_Date,START_DATE) END' –

+0

对不起关于我回复的方式,并不真正习惯于将回复作为发送回复,所以我经常编辑我的评论。 –

+1

@DeanIvanov,我删除了'BEGIN' ...'END',以免遇到问题分隔符。现在就去吧。 – vhu