我有一个并发工作流,它在列B
和列{{1}}上插入带有唯一索引的记录,如果成功,则执行无法回滚的异步操作(API请求) ,在一次交易中。
所述API请求应该只发生一次,但是如果并行插入该记录,它可能会被多次触发。
如果我没有弄错,解决这个问题的方法是设置对违规行的锁定,以确保任何并行的inerts将等到初始事务完成。
哪个锁对于这个用例是正确的?
答案 0 :(得分:0)
无需显式锁定。
如果第二个事务为已插入未提交的其他事务的PK插入相同值,则第二个事务将等到第一个事务提交或回滚。
如果第一笔交易回滚,第二笔交易将成功。如果第一个事务提交,则第二个事务将出现“唯一键冲突”错误。