В чем разница между syscat.tabauth и sysibm.systabauth - PullRequest
0 голосов
/ 30 августа 2018

В чем разница между этими двумя запросами:

select * from syscat.tabauth

select * from sysibm.systabauth where tcreator='SYSCAT' and ttname='TABAUTH'

Они одинаковые?

EDIT: 1. выберите грантополучателя из sysibm.systabauth, где tcreator = 'SYSCAT' и ttname = 'TABAUTH' и selectauth = 'Y'

  1. выберите грантополучателя из syscat.tabauth, где selectauth = 'Y'

Будет ли какая-либо разница в значении этих двух запросов ??? Если я изменю selectauth на 'N', используя sysibm.systabauth. Отражается ли это в запросе 2?

1 Ответ

0 голосов
/ 30 августа 2018

Основным отличием является то, что один является таблицей, а другой - только для чтения. Существуют и другие различия, и они могут зависеть от версии. Также могут применяться разные разрешения.

Когда ваша целевая база данных всегда находится в Linux / Unix / Windows, используйте схему SYSCAT, поскольку IBM пытается сохранить это неизменным, даже если базовые объекты меняются между версиями (кроме случаев добавления новых столбцов). IBM описывает схему SYSCAT здесь .

Схема SYSCAT содержит много представлений и подходит для версий Db2-серверов для Linux / Unix / Windows.

Схема SYSIBM содержит много таблиц и присутствует в версиях Db2-серверов Z / OS и LUW.

Таким образом, SYSCAT.TABAUTH - это только представление SYSIBM.SYSTABAUTH, и вы можете увидеть определение представления в каталоге с помощью запроса, подобного следующему:

"select substr(text,1,4096) from syscat.views where viewschema='SYSCAT' and viewname='TABAUTH'"

Вы используете операторы GRANT и REVOKE для непосредственного изменения содержимого таблицы SYSIBM.TABAUTH, другие операторы, такие как таблица CREATE / DROP / ALTER, могут косвенно изменять ее содержимое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...