syscat.tabauth和sysibm.systabauth之间有什么区别

问题描述 投票:0回答:1

这两个查询之间有什么区别:

select * from syscat.tabauth

select * from sysibm.systabauth where tcreator='SYSCAT' and ttname='TABAUTH'

它们一样吗?

编辑:1。从sysibm.systabauth中选择被授权者,其中tcreator ='SYSCAT'和ttname ='TABAUTH'和selectauth ='Y'

  1. 从syscat.tabauth中选择被授予者,其中selectauth ='Y'

这两个查询的价值会有什么不同吗???如果我使用sysibm.systabauth将selectauth更改为'N'。这是否反映在查询2中?

db2
1个回答
1
投票

主要区别在于一个是表,另一个是只读视图。存在其他差异,它们可以是特定于版本的。不同的权限也适用。

当目标数据库始终位于Linux / Unix / Windows上时,请使用SYSCAT模式,因为IBM会尝试保持不变,即使基础对象在不同版本之间发生更改(除非添加新列)。 IBM描述了SYSCAT模式here

SYSCAT模式包含许多视图,并且与Linux / Unix / Windows版本的Db2-Servers相关。

SYSIBM架构包含许多表,并且存在于Db2服务器的Z / OS和LUW版本上。

所以SYSCAT.TABAUTH只是SYSIBM.SYSTABAUTH的一个视图,您可以使用如下查询在目录中查看视图的定义:

"select substr(text,1,4096) from syscat.views where viewschema='SYSCAT' and viewname='TABAUTH'"

您可以使用GRANT和REVOKE语句直接更改SYSIBM.TABAUTH表的内容,其他语句(如CREATE / DROP / ALTER表)可以间接更改其内容。

© www.soinside.com 2019 - 2024. All rights reserved.