【发布时间】:2021-11-11 01:07:18
【问题描述】:
我有users 表和tasks 表和user_id 列。要求用户在active 状态下只能有一项任务。
基本上用户可以在todo、done 状态下执行许多任务,但在active 状态下只能执行一项任务。
问题是如何更新任务状态以只为用户保留一项活动任务。 (可能的情况是,不同的任务和分配给任务的同一个用户会有 2 次同时更新操作) 我的想法是:
- 开始交易
- 锁定任务表以进行更新和插入
- 检查用户是否有活动任务
- 如果不更新任务状态
- 解锁表
- 提交交易
是正确的方法吗?
【问题讨论】:
-
你最好发布代码......
-
你使用的是哪个数据库
-
@GeorgeJoseph,postgres
标签: sql postgresql transactions deadlock