Переименовать /Refactor элементы базы данных - существуют только сценарии, но нет базы данных
У меня есть файлы сценария (.sql), готовые для создания базы данных (создание схемы, процедуры, добавление тестовых данных).
У меня также есть стандарты / соглашения по кодированию, которые должны быть настроены против этих сценариев.
Пример: имя таблицы не должно заканчиваться на "_tbl", все ключевые слова SQL (SELECT, UPDATE, FROM) должны быть заглавными.
Существует ли лучший / простой способ переименовать их (в соответствии со стандартами кодирования, которые у меня есть), чтобы при переименовании объекта базы данных другие объекты, которые ссылаются на переименованный объект, автоматически обновлялись с новым именем
Найдено несколько ссылок, чтобы служить этому. Но хотел бы подтвердить, что это лучший и легкий подход. Или лучше, чем этот..
Например, если я переименую столбец в таблице, все хранимые процедуры, которые ссылаются на этот столбец, автоматически обновляются с новым именем.
ПРИМЕЧАНИЕ: Также, пожалуйста, прокомментируйте инструмент для сценариев MySQL, если он отличается от инструмента для сценариев SQL
Спасибо заранее.....
1 ответ
Изменение имени столбца не обновляет хранимые процедуры, которые ссылаются на него.
CREATE TABLE t ( v char(1) );
INSERT INTO t SET v='x';
CREATE PROCEDURE p()
SELECT v FROM t;
CALL p();
+------+
| v |
+------+
| x |
+------+
ALTER TABLE t CHANGE COLUMN v v2 CHAR(1);
CALL p();
ERROR 1054 (42S22): Unknown column 'v' in 'field list'
Аналогичная проблема существует для представлений.
Я думаю, что лучший вариант - отредактировать ваши сценарии SQL с помощью текстового редактора и выполнить поиск и замену всех экземпляров имен таблиц, которые вы хотите изменить. Обновите все экземпляры вручную с помощью текстового редактора. Затем запустите сценарии SQL.