有什么办法可以列出informix中的所有模式(包括没有任何表和特权的模式)?

时间:2019-05-24 13:15:59

标签: informix

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

我看到了这个question,但没有得到想要的结果。 有关systablessysusers

的信息,请访问informix的官方网站。
select username,usertype from sysusers;

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

select distinct owner from systables;

-获取包含数据库对象的架构。

此外,sysmaster数据库的systablessysusers中到底存在什么?什么时候使用它们?

1 个答案:

答案 0 :(得分:1)

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数据库一样。