Переименовать /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.

Другие вопросы по тегам