在 SQL 中实现行级安全控制可以通过使用 RESTRICT
关键字来限制用户对特定行的访问权限。具体步骤如下:
- 创建一个具有行级安全控制的表,例如
employee
表。
CREATE TABLE employee ( id INT PRIMARY KEY, name VARCHAR(50), department VARCHAR(50), manager_id INT );
- 在表中插入一些示例数据。
INSERT INTO employee (id, name, department, manager_id) VALUES (1, 'Alice', 'HR', NULL), (2, 'Bob', 'IT', 1), (3, 'Charlie', 'Finance', 1);
- 创建一个具有行级安全控制的角色,例如
hr_manager
角色。
CREATE ROLE hr_manager;
- 授予
hr_manager
角色访问employee
表的权限。
GRANT SELECT ON employee TO hr_manager;
- 使用
RESTRICT
关键字来限制hr_manager
角色只能查看属于自己部门的员工数据。
CREATE POLICY department_policy ON employee FOR SELECT USING (department = current_user);
现在,只有属于 HR 部门的用户才能查看属于 HR 部门的员工数据,其他部门的用户无法查看 HR 部门的员工数据。通过这种方式,可以实现行级安全控制。