位运算举例权限应用

作者: 联系我们  发布:2020-01-03

摘要:

下文通过比如的艺术陈诉sqlserver中位运算的有关文化,如下所示:
试增势况:sqlserver 二〇一〇 PRADO2


 

在sqlserver的权限设置,大家平日采纳1、2、4、8、16、32、64、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

本文由全球彩票历史版本发布于联系我们,转载请注明出处:位运算举例权限应用

关键词:

上一篇:使用动态SQL创建数据库
下一篇:没有了