informix - 有没有办法列出informix中的所有模式(包括那些没有任何表和任何特权的模式)?
问题描述
我正在尝试在我的应用程序中获取元数据。为此,我需要在 informix 中列出所有模式及其元数据。我找不到任何列出所有模式的系统表(如在 oracle 中)。
我看到了这个问题,但无法得到想要的结果。systables和sysusers参考informix官网
select username,usertype from sysusers;
-- 获取具有数据库级权限的用户或角色
select distinct owner from systables;
-- 获取包含数据库对象的模式。
sysmaster
另外,数据库systables
中到底存在什么sysusers
?什么时候使用它们?
解决方案
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 数据库一样。
推荐阅读
- javascript - 创建包含从父组件发送的对象值的单个数组
- php - Laravel 模块和包有什么区别
- r - 在 R 中应用函数来改变变量
- jasmine - Jasmine - 间谍 returnValue 失败后的期望
- python - 如何组合两组列表?
- ios - 如何检测外围设备何时停止广告日期,以便我可以删除该外围设备表单发现的设备列表?
- symfony - 运行控制台命令时无法登录生产环境
- javascript - 对 SEO 友好的格式化字符串
- c# - AzureStorageEmulator.exe 与 Azure SDK 和 Visual Studio 相关的问题
- flutter - 如果身份验证失败,Flutter local_auth 对话框将关闭