我正在尝试创建一个视图,以限制用户只能看到某些列。我已授予对这些列的访问权限。但是,当我创建视图时,我会遇到权限错误。似乎我也需要授予连接列权限,这是受限制的列之一。
有没有办法授予此受限列访问权限,创建视图并撤消权限,但是在撤消权限后视图仍将运行?
当我从基础表撤消该权限时,该视图不会运行。
任何帮助,将不胜感激。
默认情况下,表只能由其所有者访问。该所有者应使用您要公开的列创建视图。然后GRANT
,您允许其他用户使用SELECT
该视图。这是在SQL标准下授予访问权限的标准模型。
例子:
CREATE TABLE t1 (
pk integer PRIMARY KEY,
t1_col varchar
);
CREATE TABLE t2 (
pk integer PRIMARY KEY,
fk_t1 integer NOT NULL REFERENCES t1,
t2_col varchar,
secret varchar
);
CREATE VIEW exposed_columns AS
SELECT t1_col, t2_col
FROM t1
JOIN t2 ON t2.fk_t1 = t1.pk;
以上所有内容仅对创建这些对象的角色可用。同一所有者可以允许访问其他角色:
GRANT SELECT ON exposed_columns TO some_role, another_role;
现在,分配了“ some_role”或“ another_role”角色的用户可以从视图中进行选择。视图后面表格中的其他列(例如PK,FK和“秘密”列)不可访问,但所有者可以访问。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句