这两个查询有什么区别?
select * from syscat.tabauth
select * from sysibm.systabauth where tcreator='SYSCAT' and ttname='TABAUTH'
他们一样吗?
编辑: 1.从sysibm.systabauth中选择被授予者,其中tcreator ='SYSCAT'和ttname ='TABAUTH'并选择auth ='Y'
这两个查询的值是否会有任何差异??? 如果我使用sysibm.systabauth将selectauth更改为“ N”。这反映在查询2中吗?
答案 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表)可以间接更改其内容。