读取权限的SQL设计,急,急,急!!!
我对系统权限管理有以下几个表:
1、(角色表)tblRoles
role_id role_name pid
1 角色一 0
11 角色二 1
111 角色三 11
2 角色四 0
......
2、(角色用户分配表)tblAssign
role_id user_Id
111 test
2 test
......
3、(权限分配表)
role_id add delete update
11 0 1 0
111 1 0 0
2 0 0 1
......
这里有两个问题,请高手指教:
1、角色有层级关系,如果用户隶属一个子角色,那他便继承父角色的权限,如何通过SQL语读出某一用户隶属的所有角色?如:test用户隶属的角色便有(1,11,111,2)
2、因为test用户隶属于1,11,111,2角色,那它的权限便是这几个角色加起来的总和,能否通过SQL语句直接返回“或运算”之后的结果呢?如test用户得到的权限便有:
add delete update
1 1 1
------解决方案--------------------用函数嘛,肯定可以达到你要的要求,你这题目太长了,看得我太累了。
------解决方案----------------------测试数据
CREATE TABLE tb(ID char(3),PID char(3),Name nvarchar(10))
INSERT tb SELECT '001 ',NULL , '山东省 '
UNION ALL SELECT '002 ', '001 ', '烟台市 '
UNION ALL SELECT '004 ', '002 ', '招远市 '
UNION ALL SELECT '003 ', '001 ', '青岛市 '
UNION ALL SELECT '005 ',NULL , '四会市 '
UNION ALL SELECT '006 ', '005 ', '清远市 '
UNION ALL SELECT '007 ', '006 ', '小分市 '
GO
CREATE FUNCTION f_Pid(@ID char(3))
RETURNS @t_Level TABLE(ID char(3),Level int) <