如何确定被某个间谍阻止(直接和间接)的间谍数量

2020-09-21 14:00发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)考虑运行以下sql 用户1 ...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


考虑运行以下sql

用户1

开始交易
 更新TABLE-A集... 

用户2

开始交易
 更新TABLE-B设置...
 更新TABLE-A集... 

用户3

开始交易
 更新TABLE-C设置...
 更新TABLE-A集... 

用户4

开始交易
 更新TABLE-D集...
 更新TABLE-C设置... 

因此,用户1直接阻止用户2和用户3,并间接阻止用户4(通过用户3)。 是否有一个查询将返回用户1的spid阻止的spid数量为3的计数? 我怀疑这是一种自我联结,这对我来说始终是个挑战。 理想情况下,我希望该查询能够在任何深度的间接阻止条件下工作。

我们正在使用ASE 15.7

谢谢。

3条回答
哎,真难
2020-09-21 14:25

也许是这样吗?

选择spid,作为阻止程序从master..sysprocesses转到#blocks中,而@@ rowcount> 0
开始
update #blocks设置阻止程序= b.blocker < br> from #blocks a,#blocks b
其中a.spid不在(从#blocks中选择阻止程序)
并且a.blocker = b.spid
和b.blocker!= 0
结束
go
选择阻止程序,从#blocks中按阻止计数(*)为"计数"
按阻止程序分组
使阻止程序> 0
按阻止程序
go

一周热门 更多>