小编Gen*_*zer的帖子

使用数据库跟踪对象的锁定/解锁

我需要跟踪对象的锁定/解锁操作。在对对象(合同、合作伙伴等)进行任何操作之前,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)

sql-server sql-server-2008-r2

8
推荐指数
1
解决办法
2169
查看次数

标签 统计

sql-server ×1

sql-server-2008-r2 ×1