我需要跟踪对象的锁定/解锁操作。在对对象(合同、合作伙伴等)进行任何操作之前,lock
会发出一个事件。动作完成后,它发出unlock
事件。
我想获取那些已锁定但尚未解锁的对象。目标是使查询快速并避免死锁。
下面是表格
create table locks (
id int identity,
name varchar(255),
lock int
)
insert into locks values('a', 1)
insert into locks values('b', 1)
insert into locks values('c', 1)
insert into locks values('d', 1)
insert into locks values('a', 0)
insert into locks values('c', 0)
insert into locks values('a', 1)
insert into locks values('b', 1)
Run Code Online (Sandbox Code Playgroud)
我使用下面的查询来反对尚未解锁的对象:
select distinct m.name from locks m
where (select COUNT(id) from locks locked
where locked.lock = 1 and locked.name = m.name) …
Run Code Online (Sandbox Code Playgroud)