这两个查询之间有什么区别:
select * from syscat.tabauth
select * from sysibm.systabauth where tcreator='SYSCAT' and ttname='TABAUTH'
它们一样吗?
编辑:1。从sysibm.systabauth中选择被授权者,其中tcreator ='SYSCAT'和ttname ='TABAUTH'和selectauth ='Y'
这两个查询的价值会有什么不同吗???如果我使用sysibm.systabauth将selectauth更改为'N'。这是否反映在查询2中?
主要区别在于一个是表,另一个是只读视图。存在其他差异,它们可以是特定于版本的。不同的权限也适用。
当目标数据库始终位于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表)可以间接更改其内容。