我需要在给定时刻跨多个表检查数据库中数据的状态。
我有下表
CREATE TABLE dbo.Activities
(
ActivityId int PRIMARY KEY NOT NULL,
StateId int NOT NULL
)
CREATE TABLE dbo.States
(
StateId int PRIMARY KEY NOT NULL,
IsFinal bit NOT NULL
)
CREATE TABLE dbo.Requests
(
RequestId int PRIMARY KEY NOT NULL,
CreatedUt datetime2(7) NOT NULL
)
我正在使用工作流引擎。工作流可以同时具有多个活动分支。每当活动状态更改时,我都会通知引擎并启动请求。引擎以要启动的文本活动来响应请求,如果该分支上没有其他活动,则响应为“无活动”。处于活动状态的其他分支上可能还有其他活动。收到响应后,我将删除请求并根据需要启动活动。
我需要知道何时停止工作流程。当所有活动都处于最终状态并且不存在任何请求时。
我想在同一时间检查两个表的状态。我需要避免像这样的比赛条件
在检查表之前,我是否可以使用SQL锁来锁定两个表?