IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Программирование (https://www.imho.ws/forumdisplay.php?f=40)
-   -   Как переименовать таблицу в Interbase (https://www.imho.ws/showthread.php?t=81191)

Over Zero 07.03.2005 18:32

Как переименовать таблицу в Interbase
 
Как переименовать таблицу в Interbase? Заранее благодарен за ответ.

ЕЖ 07.03.2005 20:24

Просто переименовать таблицу нельзя, нельзя и с помошью SQL. Надо создать новую таблицу с нужным именем и переместить в неё данные из первой. Эта часть довольно проста. Нудно будет пересоздавать все констрэйнты, триггеры, хранимые процедуры и т.д. для новой таблицы.

CEO 07.03.2005 22:01

Цитата:

ЕЖ:нельзя и с помошью SQL
Почему? А так разве нельзя(переименовать таблицу search в search_en:):
Цитата:

$sql="ALTER TABLE search RENAME search_en";mysql_query($sql);

ЕЖ 07.03.2005 22:26

CEO
В MySQL можно, в Interbase так нельзя :rolleyes:

Over Zero 09.03.2005 23:00

Вот и я обо что гутарю. А хочется и без масштабного перемещения данных и переделки прочих атрибутов. Через SQL нельзя, но нутром чую, что это реализуемо другими средствами.

ЕЖ 09.03.2005 23:37

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

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

Over Zero 11.03.2005 16:19

Хороший ответ. Спасибо за помощь.


Часовой пояс GMT +4, время: 12:23.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.