Есть ли способ перечислить все схемы в informix (включая те, которые не имеют таблиц и каких-либо привилегий)? - PullRequest
1 голос
/ 24 мая 2019

Я пытаюсь получить метаданные в моем приложении. Для этого мне нужно перечислить все схемы и их метаданные в informix. Я не могу найти ни одной системной таблицы, в которой будут перечислены все схемы (как в Oracle).

Я видел этот вопрос , но не смог получить желаемый результат. Ссылались на официальный сайт informix для systables и sysusers

select username,usertype from sysusers;

- извлекает пользователей или роли с привилегиями уровня базы данных

select distinct owner from systables;

- извлекает схемы, содержащие объект базы данных.

Кроме того, что именно присутствует в sysmaster базе данных systables и sysusers? Когда их использовать?

1 Ответ

1 голос
/ 26 мая 2019

В базе данных 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.

...