我有 2 个不同的数据库角色。我们称他们为“角色 A”和“角色 B”。
我有以下疑问:
with part_1 as (
select col_1
from table
where id <= 100
)
select p1.col_1
from part_1 as p1;
使用“角色 A”,整个查询会失败,但 CTE 内部不会失败,我只是突出显示并运行它。
如果我切换到“角色B”,我这样做没有任何问题。
有什么建议或建议吗?我不明白两个不同的角色怎么会产生不同的结果。
大概是因为角色 A 没有“表”的选择权限,但角色 B 有。
角色的全部意义在于为不同的用户提供不同的访问权限,因此这种行为既是预期的也是期望的
缺少一些权限差异,正如您所注意到的,两者似乎都在运行
using role role_a;
select col_1
from table
where id <= 100;
using role role_b;
select col_1
from table
where id <= 100;
所有工作都意味着双方都可以访问桌子..
它是一个表而不是一个视图?
select get_ddl('table','database.schema.table_name');
或者这对两个角色都有效吗
WITH part_1 AS (
SELECT col_1 FROM table
WHERE id <= 100
)
select p1.*
from part_1 as p1;
在此之后,我会问一个支持问题,因为这听起来很像一个错误,但了解其原因需要支持来深入了解实际情况。