注册

A用户创建的表授权给B用户访问,B查询不到被授权表的外键约束列?

正规子群 2024/12/17 299 2

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】: 8
【操作系统】:windows 11
【CPU】: 11th Gen Intel(R) Core(TM) i5-11500 @ 2.70GHz 2.71 GHz
【问题描述】*:

如题:A用户创建的表授权给B用户访问,B查询不到被授权表的外键约束列?

CREATE OR REPLACE VIEW SYS.ALL_CONS_COLUMNS AS SELECT /*+ PHC_MODE_ENFORCE(13) */ O1.NAME OWNER, O2.NAME CONSTRAINT_NAME, O.NAME TABLE_NAME, COLS.NAME COLUMN_NAME, CASE WHEN CON.TYPE$ != 'C' THEN CAST(SF_GET_INDEX_KEY_SEQ(I.KEYNUM, I.KEYINFO, COLS.COLID) AS NUMBER(10,0)) ELSE CAST(NULL AS NUMBER(10,0)) END POSITION FROM SYS.SYSOBJECTS O, SYS.SYSOBJECTS O1, SYS.SYSOBJECTS O2, SYS.SYSCONS CON LEFT JOIN SYS.SYSINDEXES I ON I.ID=CON.INDEXID, SYS.SYSCOLUMNS COLS WHERE O2.SUBTYPE$='CONS' AND O.SUBTYPE$ IN ('UTAB', 'STAB') AND O2.PID=O.ID AND O1.ID=O.SCHID AND O1.TYPE$ = 'SCH' AND CON.ID=O2.ID AND COLS.ID=O.ID AND (SF_COL_IS_IDX_KEY(I.KEYNUM, I.KEYINFO, COLS.COLID) = 1 OR SF_COL_IS_CHECK_KEY(O2.INFO1, O2.INFO6, COLS.COLID) = 1) AND SF_CHECK_USER_TABLE_COL_PRIV_OPT(UID(), CURRENT_USERTYPE(), O.ID, O1.PID, (SELECT INFO1 FROM SYS.SYSOBJECTS WHERE TYPE$ = 'UR' AND ID = O1.PID), COLS.COLID, 0) = 1;

这个视图的最后一个过滤条件

  AND SF_CHECK_USER_TABLE_COL_PRIV_OPT(UID(), CURRENT_USERTYPE(), O.ID, O1.PID, (SELECT INFO1 FROM SYS.SYSOBJECTS WHERE TYPE$ = 'UR' AND ID = O1.PID), COLS.COLID, 0) = 1;

似乎是判断用户有没有列的权限?

我理解的是如果授权了表,是不是表相关的信息都有权限访问?

回答 0
暂无回答
扫一扫
联系客服