[我认为这个问题的根本原因是我不了解权限和特权......]
所以,为了设置舞台,我的设置是一个数据库,称之为MyDb。
我有两个用户,spu1和u1,spu1是超级用户,u1是“普通”用户。MyDb的所有者是spu1。我想我还应该说u1具有从组角色继承的创建数据库和创建角色权限。
我有一个架构sch1,它是一个用户定义的架构。
在这个模式中,我有一个表,称为tbl1,还有一个物化视图,称为mvw1。
该TBL1的主人是SPU1,该mvw1的主人是U1。
在当前设置中,如上所述,我无法将mvw1刷新为u1或spu1。我只是得到以下有趣的错误(我已经广泛搜索了它,但没有找到任何可以完全解决我的设置的错误......)。
ERROR: permission denied for relation tbl1
********** Error **********
ERROR: permission denied for relation tbl1
SQL state: 42501
Run Code Online (Sandbox Code Playgroud)
我发现
我试图找出我需要授予普通用户u1缺少的权限(理想情况下所需的最低权限),以便我可以在以他们的身份登录时刷新此视图。
第一个选项虽然很高兴知道,但并不能解决我的问题。第二个选项似乎实际上是在向非超级用户授予超级用户权限,或者授予比我需要的更大的权限。
如果有人可以向我解释这里到底发生了什么(或指出我在解决问题所需的描述中遗漏了哪些信息),并让我知道我的第二个选择是否真的可行或更好的选择? …
postgresql permissions materialized-view errors postgresql-9.3
我一直在玩 CASE 语法,并注意到以下我不完全理解的行为差异。
鉴于以下查询
DECLARE @Value1 INT
SELECT
'Col1' = CASE WHEN @Value1 IS NULL THEN 'Yay'
ELSE 'Oh'
END
,'Col2' = CASE @Value1 WHEN NULL THEN 'Yay'
ELSE 'Oh'
END
,'Val' = @Value1
Run Code Online (Sandbox Code Playgroud)
我得到的结果集是这样的:
列 1 | Col2 | 瓦尔
耶 | 哦| 空值
我原以为他们会返回相同的结果。有人会很乐意解释这里发生了什么吗?