在高并发的情况下,即使我在工作流中定义了先查询数据是否为空,再执行数据插入操作,还是会出现重复插入数据的情况。我想咨询一下工作流是否支持数据库的事务锁,或者有其它的方法来避免数据的重复插入么?
目前工作流中默认启用了数据库事务,但事务级别是 read-uncommited,所以在高并发情况下的确可能出现别的工作流重复插入。未来会规划更细粒度的事务控制域管理,在其之前,暂时可以考虑通过部分唯一约束来解决重复插入的问题。
那是否可以使用sql操作节点,编写事务锁及查询、插入逻辑
可以使用,不过 SQL 节点启用的事务会与工作流默认的事务不会是同一个,在使用时需要自行管理,避免事务不一致的问题。
您好,再咨询个问题,如果我通过sql节点配置创建的数据,是否能触发监听数据表新增数据的工作流?
不能。文档的“数据表触发器”相关章节有相关介绍:https://docs-cn.nocobase.com/handbook/workflow/triggers/collection#非应用内的数据操作不会触发
就是说我一旦使用了sql节点,后续关联操作就只能在sql里写逻辑了……。