有大佬会设置mysql的触发器吗?

表如图所示,我想让state等于1的时候往order_completion_time插入当前时间,然后再用order_completion_time减去order_time 的小时数乘以三再插入money中,请问该如何写sql语句或者怎么设置触发器图片说明

另外我已经写好了计算时间差的函数 不知道触发器怎么设置 有没有大佬帮一下
图片说明

2个回答

tablename_(BEFORE | AFTER)_(INSERT| UPDATE | DELETE)
before_order_update是更新orders表中的行数据之前调用的触发器

CREATE TRIGGER `state` AFTER UPDATE ON `表的名字` FOR EACH ROW UPDATE `表的名字` SET order_completion_time=NOW(),money=`你的很长的表达式` WHERE state=1;


n13073768190
雨下山正倒。 回复Bug开发攻城狮: 谢谢大佬 已经解决了
10 个月之前 回复
n13073768190
雨下山正倒。 回复Bug开发攻城狮: 后面的sql语句可以运行 触发器也建好了 但是 数据改变的话会报错 Can't update table 't_order' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
10 个月之前 回复
zy_281870667
Bug开发攻城狮 回复n13073768190: 你试试,直接执行触发器后面的sql语句
10 个月之前 回复
n13073768190
雨下山正倒。 回复Bug开发攻城狮: 整了一下午了 还是没整好
10 个月之前 回复
zy_281870667
Bug开发攻城狮 回复n13073768190: 这个触发器是没问题的。sql的更新语句,不可以直接嵌套本表的查询。你套一个子查询
10 个月之前 回复
n13073768190
雨下山正倒。 老哥报错了 java.sql.SQLException: You can't specify target table 't_order' for update in FROM clause
10 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问