Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как можно получить имена владельцев этих баз? владельцы баз 
:(
    Опции темы
maxfox111
Дата 19.8.2018, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 9.11.2008

Репутация: нет
Всего: нет



Добрый день, 
может ли кто нибудь проконсультировать по следующему вопросу:
1) я подключаюсь к постгрес, как суперпользователь постгрес.
2) Список существующих баз я получаю используя вызов ZEOSDB .GetCatalogNames(BaseList); 
3) Как можно получить имена владельцев этих баз?

PM MAIL   Вверх
Snowy
Дата 20.8.2018, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: нет
Всего: 484



Код
select db.datname, a.rolname from pg_database db, pg_authid a where a.oid=db.datdba

PM MAIL   Вверх
maxfox111
Дата 22.8.2018, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 9.11.2008

Репутация: нет
Всего: нет



Snowy

"select db.datname, a.rolname from pg_database db, pg_authid a where a.oid=db.datdba"
Прошу меня извинить, но не могли бы Вы немного более подробно раскрыть данный запрос?

1) Я захожу в систему под суперпользователем постгрес
2) Вижу что в системе есть условно десять баз "mama1", "mama1", ... "mama10". Владельцами которых являются условные десять пользователей "papa21", ..."papa201". 
   Но какой пользователь является владельцем той или иной базы, я не знаю. 
3) И поэтому можно ли раскрыть более подробно прриведенный Вами запрос?
   
Чем является сивол "db" в части d.datname?
Чем является сивол "a" в части a.rolname?

Спасибо
PM MAIL   Вверх
Snowy
Дата 22.8.2018, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: нет
Всего: 484



Это просто алиасы для таблиц, чтобы не обращаться к ним по полному имени. Может так понятнее?
Код
select db.datname, a.rolname from pg_database as db, pg_authid as a where a.oid=db.datdba;

Так по полному имени:
Код
select pg_database.datname, pg_authid.rolname from pg_database, pg_authid where pg_authid.oid=pg_database.datdba;

Оба запроса возвращают список всех баз и их владельцев.

Так вернёт одно имя для конкретной базы:
Код
select rolname from pg_database, pg_authid where pg_authid.oid=pg_database.datdba and pg_database.datname='mama10';

PM MAIL   Вверх
maxfox111
Дата 23.8.2018, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 9.11.2008

Репутация: нет
Всего: нет



Snowy
Спасибо большое, так действительно более понятно.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PostgreSQL | Следующая тема »


 




[ Время генерации скрипта: 0.1267 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.