Показать сообщение отдельно
Старый 09.03.2005, 23:37     # 6
ЕЖ
::VIP::
 
Регистрация: 19.03.2004
Сообщения: 1 329

ЕЖ Бог с наворотамиЕЖ Бог с наворотами
ЕЖ Бог с наворотамиЕЖ Бог с наворотами
Ну имена таблиц хранятся в системной таблице БД 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 это осуществимо, но требуется очень аккуратное "ручное"-каскадное изменение многих системных таблиц, за которые, в общем-то отвечает сам сервер.

Так что правильнее будет всё-таки пересоздать таблицу.
ЕЖ вне форума