Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PostgreSQL > Составить запрос, по виртуальным таблицам


Автор: Ak47black 20.2.2010, 18:14
Здравствуйте.
Помогите пожалуйста кто работает с базами данных, как составить следующий запрос
Нужно показать
Цитата

Виртуальные таблицы, к которым имеет право писать запросы конкретный пользователь.

и если можно, подскажите что можно почитать по таким рода запросам smile 

Автор: Ak47black 21.2.2010, 23:35
А само условие у меня хоть правильное?  smile 

Автор: wapp 25.2.2010, 13:38
Чтобы посмотреть все таблицы 
SELECT * FROM pg_tables
Определить есть ли права к конкретной таблице
has_table_privilege()
Почитать - мануал и закрепленную тему в этом подфоруме

Автор: Ak47black 28.2.2010, 19:51
А как отделить только виртуальные виртуальные таблицы?

Что-то я нетак делаю
Если я набираю 
Код

SELECT * FROM pg_tables;

то в списке виртуальных таблиц (View) не вижу.

Автор: LSD 2.3.2010, 15:30
View как не трудно догадаться, можно посмотреть в http://www.postgresql.org/docs/8.0/static/view-pg-views.html. Но вот являются ли view теми самыми:
Цитата(Ak47black @  20.2.2010,  18:14 Найти цитируемый пост)
Виртуальные таблицы, к которым имеет право писать запросы конкретный пользователь.

это большой вопрос.

Автор: Ak47black 2.3.2010, 15:44
Я с pg_views уже пробовал.
Делаю вот так
Код

SELECT * FROM pg_views;

получаю какой непонятный ответ, похожий на дамп.

Автор: LSD 2.3.2010, 15:45
Ну ты хоть покажи, что ты получаешь, хотя бы начало, если вывод большой.

Автор: Ak47black 2.3.2010, 17:57
Пожалуйста
http://img28.imageshack.us/img28/9587/32801875.png
В конце идёт, чтото на подобии
http://img130.imageshack.us/img130/6418/97052390.png/

Автор: LSD 2.3.2010, 19:33
Попробуй так:
Код

SELECT schemaname, viewname, viewowner FROM pg_views;


И поставь себе какой нибудь продвинутый SQL клиент.

Автор: Ak47black 2.3.2010, 22:07
А как определить какая из них является виртуальной таблицей, тоесть view. (тип другими словами)
У меня не получается правильно пользоваться хелпом.
Как составить чтото на подобии
Код

SELECT schemaname, viewname.reltype, viewowner FROM pg_views;

?

Автор: LSD 3.3.2010, 13:40
Цитата(Ak47black @  2.3.2010,  22:07 Найти цитируемый пост)
А как определить какая из них является виртуальной таблицей, тоесть view.

Как несложно догадаться из названия, там перечислены только view.



Цитата(Ak47black @  2.3.2010,  22:07 Найти цитируемый пост)
У меня не получается правильно пользоваться хелпом.

И в чем трудности с хелпом?

Автор: Ak47black 3.3.2010, 15:39
Вроде-бы у меня получилось составить запрос
Код

SELECT (schemaname, viewname, 'write') viewname, viewowner FROM pg_views;

LSD, могли-бы Вы взглянуть и сказать правильно-ли или чего-то не хватает?

Автор: LSD 3.3.2010, 17:01
Я не знаю, что ты пытаешься отобразить. Зачем ты там вообще скобки поставил?

Автор: Ak47black 3.3.2010, 21:02
Короче я тут запутался.
Там то что я получил неправильно.
Как тогда можно применить
Код

has_table_privilege()

к
Код

SELECT schemaname, viewname, viewowner FROM pg_views;

Тоесть показать только те к которым имеет право записи текущий пользователь?

Автор: LSD 4.3.2010, 15:02
Как-то так
Код

SELECT schemaname, viewname, viewowner
  FROM pg_views
 WHERE has_table_privilege('vasya_pupkin', schemaname || '.' || viewname, 'select')

Автор: Ak47black 4.3.2010, 17:11
О, спасибо!
Я уже собирался делать по другому пути,
через Information_Schema.tables и  Information_Schema.tables,
но думал как всётаки этим путём можно сделать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)