锁定SQL Server中的多个表

时间:2018-11-23 09:37:24

标签: sql sql-server

我需要在给定时刻跨多个表检查数据库中数据的状态。

我有下表

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
)

我正在使用工作流引擎。工作流可以同时具有多个活动分支。每当活动状态更改时,我都会通知引擎并启动请求。引擎以要启动的文本活动来响应请求,如果该分支上没有其他活动,则响应为“无活动”。处于活动状态的其他分支上可能还有其他活动。收到响应后,我将删除请求并根据需要启动活动。

我需要知道何时停止工作流程。当所有活动都处于最终状态并且不存在任何请求时。

我想在同一时间检查两个表的状态。我需要避免像这样的比赛条件

  1. 我检查活动表->所有状态都处于最终状态(但是此时有一个打开的请求,代码不知道该请求)
  2. 请求完成并投放新的活动并将其删除
  3. 我检查了请求表,但没有看到请求,因此我错误地停止了工作流程。

在检查表之前,我是否可以使用SQL锁来锁定两个表?

0 个答案:

没有答案