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

时间:2018-08-30 09:47:21

标签: db2

这两个查询有什么区别?

select * from syscat.tabauth

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

他们一样吗?

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

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

这两个查询的值是否会有任何差异??? 如果我使用sysibm.systabauth将selectauth更改为“ N”。这反映在查询2中吗?

1 个答案:

答案 0 :(得分:1)

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

当目标数据库始终位于Linux / Unix / Windows上时,请使用SYSCAT模式,因为IBM会尝试保持该状态不变,即使基础对象在版本之间进行更改(添加新列的地方除外)也是如此。 IBM描述了SYSCAT模式here

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

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表)可以间接更改其内容。