postgresql测试行级访问控制的语句
时间: 2023-09-27 20:04:57 浏览: 37
下面是一个 PostgreSQL 测试行级访问控制的语句:
```
CREATE TABLE employees (
id SERIAL PRIMARY KEY,
name VARCHAR(50),
department VARCHAR(50),
salary INT
);
INSERT INTO employees (name, department, salary) VALUES
('Alice', 'Sales', 50000),
('Bob', 'IT', 60000),
('Charlie', 'Marketing', 70000);
CREATE ROLE sales;
GRANT SELECT, INSERT, UPDATE ON employees TO sales;
ALTER TABLE employees ENABLE ROW LEVEL SECURITY;
CREATE POLICY sales_policy ON employees FOR SELECT
USING (department = 'Sales');
SET ROLE sales;
SELECT * FROM employees;
```
这个示例中,我们创建了一个名为 `employees` 的表,并向其中插入了几行数据。然后我们创建了一个名为 `sales` 的角色,并授予其对 `employees` 表的 `SELECT`、`INSERT` 和 `UPDATE` 权限。接着,我们启用了行级安全性,并创建了一个名为 `sales_policy` 的策略,以便 `sales` 角色只能查看 `department` 列为 'Sales' 的行。最后,我们将当前角色设置为 `sales` 并查询 `employees` 表,以验证该策略是否生效。