嗨,只是想知道这种情况是否可能?
我有两个表和一个关系表来创建两个表之间的多对多关系。请参阅下表以获取简单表示;
| Security ID | Security Group |
| 1 | Admin |
| 2 | Basic |
| Security ID | Access ID |
| 1 | NULL |
| 2 | 1 |
| Function ID | Function Code |
| 1 | Search |
| 2 | Delete |
我想要实现的是在检查关系表时我想返回安全组上的用户有权访问的所有功能。如果将用户分配到关系表中包含 NULL 值的安全组,则授予他们对所有功能的访问权限。
例如,“基本”安全组中的用户可以访问搜索功能,而“管理员”安全组中的用户应该可以访问搜索和删除功能。
以这种方式设置的原因是因为用户可以拥有 0 到多个安全组,并且功能列表非常大,需要使用您可以访问的功能白名单,而不是您可以访问的功能黑名单列表”访问。
感谢您的时间。
您的表格示例:
CREATE TABLE #G
(
Security_ID INT,
Security_Group VARCHAR(32)
)
INSERT INTO #G
VALUES (1, 'Admin'), (2, 'Basic')
CREATE TABLE #A
(
Security_ID INT,
Access_ID INT
)
INSERT INTO #A
VALUES (1, NULL), (2, 1)
CREATE TABLE #F
(
Function_ID INT,
Function_CODE VARCHAR(32)
)
INSERT INTO #F
VALUES (1, 'Search'), (2, 'Delete')
询问:
SELECT #G.Security_Group, #F.Function_CODE
FROM #G
JOIN #A ON #G.Security_ID = #A.Security_ID
JOIN #F ON #F.Function_ID = #A.Access_ID OR #A.Access_ID IS NULL
删除示例表:
DROP TABLE #G
DROP TABLE #A
DROP TABLE #F
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句