在 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 部门的员工数据。通过这种方式,可以实现行级安全控制。