如何获取dm_acl中同时授予相同权限的对象

how to fetch the objects in dm_acl who grants the same sets of permission at the same time

我正在做一个连接到 Documentum 数据源的 JavaFx 项目。可以说我有一组组: group1 , group2 , group3 我如何查询 dm_acl 中的所有 acl_names 谁拥有 only and exactly 这些组作为他们的 r_acceesor_name 。例如,使用以下查询我可以获得特定 acl 的 r_accessor_name:

select r_acceessor_name from dm_acl where object_name = 'My_acl_name' enable (row_based)

输出为:

group1
group2
group3

但我想做的是相反的事情。我尝试了以下查询:

select object_name from dm_acl where r_accessor_name = 'group1' or r_accessor_name = 'group2' or r_accessor_name = 'group3' enable (row_based) 

但是输出的问题是它太笼统了,因为关键字 OR 然后我试了这个:

select object_name from dm_acl where r_accessor_name = 'group1' and r_accessor_name = 'group2' and r_accessor_name = 'group3' enable (row_based) 

太具体了 ==> 零输出

你比你想象的更困惑自己。 每个 ACL 对象至少有两个条目:dm_ownerdm_world,其中第一个代表存储库所有者,最后一个代表存储库中的每个用户。

因为你的 objective

...来自 dm_acl 的所有 acl_names 只有 并且恰好 这些组 ...

无法实现。 但是,除此之外,您的查询

SELECT object_name FROM dm_acl 
WHERE r_accessor_name = 'group1' 
AND r_accessor_name = 'group2' 
AND r_accessor_name = 'group3' 
ENABLE (ROW_BASED)

是你能得到的最好的。您的问题是您的存储库中确实没有至少包含这 3 个组的 ACL。这会引出您最初的问题:要么您做出了错误的假设,要么您试图过多地概括您的问题,以至于您忽略了其中的重要部分。 ;)

我想我读懂了你的想法并得出了你真正需要的东西:

SELECT object_name FROM dm_acl 
WHERE r_accessor_name IN ('group_A', 'group_B', 'group_C')  
GROUP BY object_name
HAVING COUNT(DISTINCT r_accessor_name) = 2 
ENABLE (row_based)

试一试,看看是否可行。