首页 > 解决方案 > 有没有办法列出informix中的所有模式(包括那些没有任何表和任何特权的模式)?

问题描述

我正在尝试在我的应用程序中获取元数据。为此,我需要在 informix 中列出所有模式及其元数据。我找不到任何列出所有模式的系统表(如在 oracle 中)。

我看到了这个问题,但无法得到想要的结果。systablessysusers参考informix官网

select username,usertype from sysusers;

-- 获取具有数据库级权限的用户或角色

select distinct owner from systables;

-- 获取包含数据库对象的模式。

sysmaster另外,数据库systables中到底存在什么sysusers?什么时候使用它们?

标签: informix

解决方案


Informix 数据库中没有实际的模式对象(您不能授予模式特权)。有各种类型的“对象”,每个对象都有一个所有者。如果您真的愿意,您可以认为所有者是模式。对新创建的 Informix(版本 14.10.FC1)数据库的目录表进行简单搜索,我们得到:

SELECT
    t.tabname,
    c.colname
FROM
    systables AS t 
INNER JOIN 
    syscolumns AS c
ON 
    t.tabid = c.tabid
WHERE 
    c.colname = 'owner'
;


tabname  systables
tabname  sysindices
tabname  syssynonyms
tabname  syssyntable
tabname  sysconstraints
tabname  sysprocedures
tabname  sysopclstr
tabname  systriggers
tabname  sysobjstate
tabname  sysxtdtypes
tabname  syscasts
tabname  sysopclasses
tabname  sysaggregates
tabname  sysdomains
tabname  sysindexes

还有更多,这只是对目录表的快速浏览。因此,您的架构信息分布在多个目录中。

关于 sysmaster 数据库,它是一个数据库(虽然是一个特殊的数据库),因此它有自己的目录表,就像任何其他 Informix 数据库一样。


推荐阅读