数据库做一张cron表,每个任务对应一条记录,增加 version 字段,任务运行前做一下查询,再version +1后的值 再更新到数据库,返回 1 了说明竞争到了执行权限, 就接着运行任务, 否则结束任务即可 比如 UPDATE cron SET version=101 WHERE (`id`='1') and version=100;
batch用法貌似没有问题,SQL存在拼接问题。返回0就是要么数据没有什么改变,要么就是where没有匹配上。 其次再说你这个业务,完全可以用SQL where id in(1,2,3) 这样组装,再update执行一次就OK了,何必大炮打蚊子了, 如果业务是 有一个 是已审批就不执行, 那么后面追加一个and条件就可以了啊