imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 07.03.2005, 18:32     # 1
Over Zero
Guest
 
Сообщения: n/a

Как переименовать таблицу в Interbase

Как переименовать таблицу в Interbase? Заранее благодарен за ответ.
 
Старый 07.03.2005, 20:24     # 2
ЕЖ
::VIP::
 
Регистрация: 19.03.2004
Сообщения: 1 329

ЕЖ Бог с наворотамиЕЖ Бог с наворотами
ЕЖ Бог с наворотамиЕЖ Бог с наворотами
Просто переименовать таблицу нельзя, нельзя и с помошью SQL. Надо создать новую таблицу с нужным именем и переместить в неё данные из первой. Эта часть довольно проста. Нудно будет пересоздавать все констрэйнты, триггеры, хранимые процедуры и т.д. для новой таблицы.
ЕЖ вне форума  
Старый 07.03.2005, 22:01     # 3
CEO
Full Member
 
Аватар для CEO
 
Регистрация: 31.08.2003
Адрес: где-то между Марсом и Юпитером
Сообщения: 998

CEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собой
Цитата:
ЕЖ:нельзя и с помошью SQL
Почему? А так разве нельзя(переименовать таблицу search в search_en:
Цитата:
$sql="ALTER TABLE search RENAME search_en";mysql_query($sql);
__________________
Старые игры раздают здесь
CEO вне форума  
Старый 07.03.2005, 22:26     # 4
ЕЖ
::VIP::
 
Регистрация: 19.03.2004
Сообщения: 1 329

ЕЖ Бог с наворотамиЕЖ Бог с наворотами
ЕЖ Бог с наворотамиЕЖ Бог с наворотами
CEO
В MySQL можно, в Interbase так нельзя
ЕЖ вне форума  
Старый 09.03.2005, 23:00     # 5
Over Zero
Guest
 
Сообщения: n/a

Вот и я обо что гутарю. А хочется и без масштабного перемещения данных и переделки прочих атрибутов. Через SQL нельзя, но нутром чую, что это реализуемо другими средствами.
 
Старый 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 это осуществимо, но требуется очень аккуратное "ручное"-каскадное изменение многих системных таблиц, за которые, в общем-то отвечает сам сервер.

Так что правильнее будет всё-таки пересоздать таблицу.
ЕЖ вне форума  
Старый 11.03.2005, 16:19     # 7
Over Zero
Guest
 
Сообщения: n/a

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


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


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




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