mssql sqlserver SQL 位运算举例权限制行驶使

摘要:

下文通过举例的办法讲述sqlserver中位运算的有关文化,如下所示:
试验环境:sqlserver 二〇〇八 CRUISER2


 

在sqlserver的权限设置,大家家常便饭接纳壹 、二 、肆 、⑧ 、1⑥ 、3② 、6四 、128等数值分别表示相关消息的某一气象供工作情状使用,通过字段值之间的三结合形成多个景色值存款和储蓄到数据库中,
设置三个角色有所的权力
例:
1:代表“查看”按钮权限
2:代表”修改”按钮
4:代表”导出”按钮
8:代表”删除”按钮

--例:
--权限表如下:
create table userRole(userId varchar(36),
roleInfo int);
go

insert into userRole(userId,roleInfo)values('test',1) ---初始化测试账号"test",拥有查看权限
insert into userRole(userId,roleInfo)values('猫猫',2) 
--当我们需要给用户加入修改"2"权限,则可以使用以下运算
update userRole set roleInfo =roleInfo|2 where userId ='test'


--当我们需要给用户加入导出"4"权限,则可以继续使用以下运算
update userRole set roleInfo =roleInfo|4 where userId ='test'


--当我们需要给用户删除导出"4"权限,则可以继续使用以下运算
--删除权限前需判断用户是否存在此权限,此脚本不可多次运行
--if exists (select null from userRole where roleInfo &4 =4 and userId ='test')
---begin
update userRole set roleInfo =roleInfo^4 where userId ='test' and roleInfo&4 =4 
--end
---我们检索所有拥有权限"修改2"的用户信息
select * from userRole where roleInfo &2 = 2

go
truncate table userRole
drop table userRole

 

注意事项:

此间权限设置,首要使用二进制中每一人代表贰个权力及位运算的性状开始展览权力的增减操作
由于”^异或运算”运算,左表明式1或0 时
右表明式为1时,将分别发生0、1,所以剔除权限时,一定要认清是还是不是留存此权限

 转自:http://www.maomao365.com/?p=7137

相关文章