日期:2014-05-18  浏览次数:20742 次

求解答!!!
2个关系模式
职工(职工号,姓名,年龄,职务,工资,部门号)
部门(部门号,名称,经理名,地址,电话号)
请用SQL 的 GRANT REVOKE语句 完成下面题目
问题: 每个职工只对自己的记录有SELECT的权力

------解决方案--------------------
create view v_职工
as
select * from 职工,部门
where 职工.部门号=部门.部门号
and 职工.姓名=user_name()
go

Grant select on v_职工 to public


------解决方案--------------------
说一说我们目前的做法
因为SQL Server对每一个连接都会有唯一的一个@@spid, 所以每次打开数据连接时, 我们都向一个数据表中写一条记录, 包含一个@@spid和一个UserId, 其中UserId对应我们系统登录用户的ID
使用时, 我们通过@@spid找到UserId, 这样SQL就可以使用UserId 和 数据表里每条记录的创建人做过滤条件, 去掉自己没有权限的