USING 子句
TO 子句
TO 部分中,您可以指定此策略适用的用户和 roles 列表。例如,CREATE ROW POLICY ... TO accountant, john@localhost。
关键字 ALL 表示所有 ClickHouse 用户,包括当前用户。关键字 ALL EXCEPT 允许从所有用户列表中排除某些用户,例如 CREATE ROW POLICY ... TO ALL EXCEPT accountant, john@localhost
AS 子句
OR 运算符进行组合。例如,以下策略:
peter 查看满足 b=1 或 c=2 的行。
AS 子句指定策略应如何与其他策略组合。策略可以是宽松型或限制型。默认情况下,策略为宽松型,这意味着它们会通过布尔 OR 运算符组合。
或者,也可以将策略定义为限制型。限制型策略会通过布尔 AND 运算符组合。
以下是通用公式:
b=1 且 c=2 两个条件同时满足时,才允许用户 peter 查看这些行。
数据库策略会与表策略组合生效。
例如,以下策略:
peter 只有在同时满足 b=1 且 c=2 时才能看到 table1 的行,尽管
mydb 中的任何其他表对该用户都只会应用 b=1 策略。
ON CLUSTER 子句
示例
CREATE ROW POLICY filter1 ON mydb.mytable USING a<1000 TO accountant, john@localhost
CREATE ROW POLICY filter2 ON mydb.mytable USING a<1000 AND b=5 TO ALL EXCEPT mira
CREATE ROW POLICY filter3 ON mydb.mytable USING 1 TO admin
CREATE ROW POLICY filter4 ON mydb.* USING 1 TO admin