Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.01.23;
Скачать: [xml.tar.bz2];

Вниз

Список таблиц в IB   Найти похожие ветки 

 
Vlad_T   (2002-12-28 12:17) [0]

Подскажите способ получения списка существующих таблиц в базе данных.


 
passm   (2002-12-28 12:24) [1]

Vlad_T (28.12.02 12:17)> Ищи с системных таблицах.
В Rx Library есть DB Explorer. Там можно посмотреть список. Работает даже под DB2.


 
Vlad_T   (2002-12-28 12:30) [2]

Уточняю - в IB можно получить подобную информация из системных таблиц (RDB$....) с помощью SQL запроса. Беда в том, что не помню имя системной таблицы!!!


 
myor   (2002-12-28 12:41) [3]


> Уточняю - в IB можно получить подобную информация из системных
> таблиц (RDB$....) с помощью SQL запроса. Беда в том, что
> не помню имя системной таблицы!!!


наверняка не знаю, но подозреваю, что что-то вроде rdb$tables


 
Vlad_T   (2002-12-28 12:52) [4]

Единственное что сработало - запрос к RDB$USER_PRIVILEGES на предмет доступных таблиц для редактирования пользователя SYSDBA. Изврат редкостный, но работает! Единственная проблема: если изменят логин админа?

Может кто-то знает как сделать красивее??



 
Mike_Goblin   (2002-12-28 13:31) [5]

TIBDatabase.GetTableNames

procedure GetTableNames(List: TStrings; SystemTables: Boolean = False);

Description

Call GetTableNames to retrieve a list of tables in the associated database.

Хотя за корректность ее работы не ручаюсь


 
Vlad_T   (2002-12-28 13:32) [6]

Все, разобрался.
Если кому итерестно, привожу процедуту получения списка таблиц в IB: // удобнее хранить прямо на сервере :)

CREATE VIEW VIEW_TABLE_NAME (
TABLE_NAME
) AS
SELECT DISTINCT RDB$relation_name as table_name from RDB$USER_PRIVILEGES
WHERE not (RDB$relation_name like "RDB$") and (RDB$Object_type=0) and (RDB$relation_name<>"RDB$ROLES")


 
myor   (2002-12-29 11:22) [7]


> Vlad_T (28.12.02 13:32)
> Все, разобрался. и далее...


тогда поищи таблицу rdb$user_tables или rdb$dba_tables
повторюсь, на счет ib не уверен, а, по аналогии с oracle,
если в ib есть RDB$USER_PRIVILEGES и т. д., то должны быть и rdb$user_tables, rdb$user_rules и т. д..


 
Сергєєв Володимир   (2002-12-29 22:20) [8]

Как все сложно....
Если хочешь сделать все правильно - смотри совет Vlad_T - все имена таблиц базы данных (а также просмотров) лежат в RDB$REALATION.

Ну, а вообще, если коннектишся к базе с правами SYSDBA, и если у тя есть хоть один IBTable с Active := TRUE, то в TableNames[i] - список всех таблиц базы. Но при этом посмотри внимательно флаги, не помню точно, там есть что-то вроде множества
[tables, views, systemdata], которое определяет включать ли в TableNames[i] таблицы, просмотры и RDB$...


 
Sergey Masloff   (2002-12-29 23:28) [9]

Vlad_T
>CREATE VIEW VIEW_TABLE_NAME (
> TABLE_NAME
>) AS
>SELECT DISTINCT RDB$relation_name as table_name from >RDB$USER_PRIVILEGES
>WHERE not (RDB$relation_name like "RDB$")
Это ты откидываешь системные объекты...
>and (RDB$Object_type=0)
а это отбираются только таблицы (а, непример, не ХП)
>and (RDB$relation_name<>"RDB$ROLES")
это непонятно зачем...

А если так:
select rdb$relation_name from rdb$relations where rdb$system_flag = 0
и никаких DISTINCT которые есть тормоза по сути своей ;-)



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.01.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
14-72500
ZiLot
2003-01-06 13:07
2003.01.23
Проблемы со свойствами формы (BorderIcons и BorderStyle)


4-72605
MikeZ
2002-12-08 17:44
2003.01.23
Как убить программу, спрятаную в трее?


3-72130
АндрейР
2003-01-01 21:00
2003.01.23
Числовые поля в Интербейс


1-72402
ihtiandr
2003-01-13 17:24
2003.01.23
Вопросик


3-72031
Aleksandr
2003-01-04 17:18
2003.01.23
Как реструктурировать таблицу Парадокс, не открывая ее?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский