Как изменить префикс имени столбца таблицы? - PullRequest
0 голосов
/ 29 сентября 2011

У меня есть такая таблица ниже,

Field           Type            Collation           Attributes  Null    Default

cde_id          int(10)         No                  0                               
cde_title       varchar(255)    utf8_general_ci     Yes         NULL                                 
cde_content     mediumtext      utf8_general_ci     Yes                 NULL                                 
pg_id           varchar(255)    utf8_general_ci     Yes         0                                
cde_created     timestamp                                       No      0000-00-00 00:00:00     

Но я хочу изменить префикс имени столбца с 'cde' на 'code'.

Я использую этот запрос, чтобы изменить имя,

ALTER TABLE root_page_embed_codes
CHANGE cde_id code_id int(10)

Затем я обнаружил, что он недостаточно динамичен, поскольку столбец types отличается от одного к другому, и у меня также есть foreign key - pg_id.

Какой-либо метод запроса, который я могу использовать для более простого изменения префикса?

Ответы [ 2 ]

1 голос
/ 29 сентября 2011

Int в mysql всегда int.Часть (10) является просто подсказкой MySQL относительно того, сколько цифр она должна отображать.Независимо от того, хотите ли вы 1 цифру или 10, это все равно будет внутренним идентичным определением целочисленного значения.

Что именно вы подразумеваете под "недостаточно динамичным"?Изменение имени поля cde_id никоим образом не повлияет на поле pg_id.


продолжение: Вы можете объединить несколько изменений в поле в одном запросе на изменение:

ALTER TABLE root_page_embed_codes CHANGE cde_id code_id int, cde_content code_content mediumtext, cde_created code_created timestamp

Вы можете 'Однако вам не нужно указывать «новый» тип поля, поскольку MySQL недостаточно умен, чтобы понимать, что вы просто переименовываете поле и не хотите ничего менять, НО имя.К сожалению, для полей нет «переименования», как для таблиц и баз данных.

0 голосов
/ 29 сентября 2011

MySQL не заботится о зависимых FK, когда поле переименовывается. Как предложил Люк М - вам следует воссоздать ФК.

Также вы можете попробовать переименовать это поле в dbForge Studio for MySQL (Express Edition):

  1. Выберите поле в Database Explorer
  2. Переименуйте его (нажмите F2 или выберите «Переименовать» во всплывающем меню)
  3. Нажмите кнопку «Рефакторинг» в окне сообщения. Он переименует выбранное поле и заново создаст все связанные внешние ключи.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...