我正在尝试使用帐户(ACCOUNTX)从某个表(READTABLE)读取。此帐户在表READTABLE上具有读取(选择)权限。我使用以下方式检查了这个:
from syscat.tabauth
where grantee = CURRENT USER and (SELECTAUTH = \'Y\' OR SELECTAUTH = \'G\')
其他人返回,READTABLE。
但是,执行我有FROM READTABLE
的语句我收到以下错误:
[DB2/AIX64] SQL0204N "ACCOUNTX.READTABLE is an undefined name. SQLSTATE=42704
为什么这张桌子会预先加入ACCOUNTX?或者我的特权检查查询错了吗?
答案 0 :(得分:2)
DB2中的每个表都属于一个模式。因此,完全限定的表名由模式名称和表名组成,用点分隔。
如果在引用表时,您没有明确地使用模式名称限定它,那么DB2将获取会话中设置的CURRENT SCHEMA
变量的值。默认情况下,CURRENT SCHEMA
初始化为您的授权ID(用户名)的值。
显然,您的表格READTABLE
属于与ACCOUNTX
不同的架构。如果您没有读取表的权限,则错误将有所不同。