就是根据schedule表的时间和当前时间进行比较,然后更新order表的state值
delimiter $$
DROP PROCEDURE IF EXISTS update_order_state
CREATE PROCEDURE update_order_state()
BEGIN
UPDATE `order`,`schedule` SET order_state = 1
WHERE `order`.schedule_id = `schedule`.schedule_id
AND schedule_start_time < current_timestamp;
END$$
delimiter;
报错:
> 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CREATE PROCEDURE update_order_state()
BEGIN
UPDATE `order`,`schedule` SET o' at line 2
UPDATE 后面是表名
order 后面的应该是点好不是逗号吧,要统一风格。
你如果要达到相同效果的话,就在 UPDATE 的 WHERE 后面写子查询,然后 `order`.schedule_id in ()
这个要用子查询实现,update语句不能这样写。
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632
语法是没有错的,你看看你俩张表是不是都有 order_state 这个字段,平时开发在连表的时候,最好带上表别名去点属性。
示例:
UPDATE sr_record,
sr_record_business
SET `sr_record`.cm_no = 'ZRCL_2021040600041'
WHERE
`sr_record`.record_id = `sr_record_business`.record_id
AND `sr_record_business`.record_id = '0124b2f75b49419888797fbfafe9bb1a'