今有两个关系模式: 职工(职工号,姓名,年龄,职务,工资,部门号) 部门(部门号,名称,经理名,地址,电话号) 请用SQL的GRANT和REVOKE语句(加上视图机制)完成以下授权定义或存取控制功能: (3) 每个职工只对自己的记录有select权力
时间: 2023-11-14 08:04:24 浏览: 264
【4/1-14】第五章习题+第八章存储过程
5星 · 资源好评率100%
首先,需要创建一个名为"employee"的表和一个名为"department"的表,用于存储职工和部门的信息。
```
CREATE TABLE employee (
emp_id INT PRIMARY KEY,
name VARCHAR(50),
age INT,
position VARCHAR(50),
salary FLOAT,
dept_id INT
);
CREATE TABLE department (
dept_id INT PRIMARY KEY,
name VARCHAR(50),
manager_name VARCHAR(50),
address VARCHAR(100),
phone VARCHAR(20)
);
```
然后,可以使用GRANT和REVOKE语句来授权和撤销权限。
```
-- 创建一个名为"employee_view"的视图,只包含职工自己的记录
CREATE VIEW employee_view AS
SELECT *
FROM employee
WHERE emp_id = CURRENT_USER;
-- 授予每个职工只对自己的记录有select权力
GRANT SELECT ON employee_view TO PUBLIC;
-- 撤销对视图的select权限
REVOKE SELECT ON employee_view FROM PUBLIC;
```
这样,每个职工只能够查看自己的记录,而不能查看其他职工的记录。
阅读全文