Ну имена таблиц хранятся в системной таблице БД RDB$RELATIONS. Вот код получения их списка.
Код:
select rdb$relation_name from rdb$relations
where rdb$system_flag = 0
order by rdb$relation_name asc;
Имена полей хранятся в системной таблице RDB$RELATION_FIELDS. Пример кода для получения их списка для определенной табицы:
Код:
select rdb$field_name
from rdb$relation_fields
where rdb$relation_name = "EMPLOYEE";
Как видишь, связь таблицы полей с системной таблицей описания таблиц - не по int-овому ForeignKey, а как раз по имени. В этом то и вся проблема переименовывания. И так со многими системными таблицами (ограничения, триггеры и т.д.).
Чисто теоретически, на SQL это осуществимо, но требуется очень аккуратное "ручное"-каскадное изменение многих системных таблиц, за которые, в общем-то отвечает сам сервер.
Так что правильнее будет всё-таки пересоздать таблицу.
|