powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как в Interbase получить список Таблиц
3 сообщений из 3, страница 1 из 1
Как в Interbase получить список Таблиц
    #32282309
lkv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как в Interbase, по аналогии с Oracle (select * from all_tables), получить список Таблиц. Триггеры/констрэйнты без проблем, а вот с Таблицами...
...
Рейтинг: 0 / 0
Как в Interbase получить список Таблиц
    #32282361
Roman Ignatiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select * from rdb$relations
...
Рейтинг: 0 / 0
Как в Interbase получить список Таблиц
    #32291512
lkv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
какая здесь ошибка???
треба получить структуру из всех полей таблиц,
с указанием ссылок из полей с ограничением FK в поля соответствующиих PK
объединено 2 запроса, 1й включает то, что описано выше, второй добавляет
остальные (не FK) поля
/*-------------------------------*/
SELECT DISTINCT a.RDB$RELATION_NAME as FROM_DB, sgm1.rdb$field_name FROM_DB_FLD,
(RTRIM(a.RDB$RELATION_NAME)|| '.' ||RTRIM(sgm1.rdb$field_name)) as FROM_FLD,
(RTRIM(c.RDB$RELATION_NAME)|| '.' ||RTRIM(sgm2.rdb$field_name)) as TO_FLD,
c.RDB$RELATION_NAME as TO_REL, sgm2.rdb$field_name
FROM RDB$RELATION_CONSTRAINTS a, RDB$REF_CONSTRAINTS b,
RDB$RELATION_CONSTRAINTS c, rdb$index_segments sgm1
JOIN RDB$RELATION_CONSTRAINTS cc on (cc.RDB$RELATION_NAME = c.RDB$RELATION_NAME)
and (cc.RDB$CONSTRAINT_TYPE = "PRIMARY KEY")
JOIN rdb$index_segments sgm2 on sgm2.rdb$index_name = cc.rdb$index_name
WHERE (a.RDB$CONSTRAINT_NAME = b.RDB$CONSTRAINT_NAME)
and (b.RDB$CONST_NAME_UQ = c.RDB$CONSTRAINT_NAME)
and (a.RDB$INDEX_NAME=sgm1.rdb$index_name)
UNION
select A.rdb$relation_name, a.rdb$field_name,' ',' ',' ',' '
from rdb$relation_fields a, rdb$fields b
where (a.rdb$field_source = b.rdb$field_name) and
(a.rdb$relation_name || a.rdb$field_name not in (
SELECT a.RDB$RELATION_NAME || a.rdb$field_name
FROM RDB$RELATION_CONSTRAINTS a, RDB$REF_CONSTRAINTS b,
RDB$RELATION_CONSTRAINTS c, rdb$index_segments sgm1
JOIN RDB$RELATION_CONSTRAINTS cc on (cc.RDB$RELATION_NAME = c.RDB$RELATION_NAME)
AND (cc.RDB$CONSTRAINT_TYPE = "PRIMARY KEY")
JOIN rdb$index_segments sgm2 on sgm2.rdb$index_name = cc.rdb$index_name
WHERE (a.RDB$CONSTRAINT_NAME = b.RDB$CONSTRAINT_NAME)
AND (b.RDB$CONST_NAME_UQ = c.RDB$CONSTRAINT_NAME)
AND (a.RDB$INDEX_NAME=sgm1.rdb$index_name)
))
order by 1,2 asc;
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как в Interbase получить список Таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]