У меня есть стол и соответствующий вид.Как предотвратить изменение столбца таблицы, если существует представление с этим столбцом?
CREATE TABLE IF NOT EXISTS `test` (
`id` mediumint(8) unsigned NOT NULL,
`test` tinyint(3) unsigned NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `test` (`id`, `test`) VALUES (DEFAULT, 1);
INSERT INTO `test` (`id`, `test`) VALUES (DEFAULT, 2);
CREATE OR REPLACE
ALGORITHM=UNDEFINED SQL SECURITY INVOKER
VIEW `test_view` AS
SELECT `id`, `test` from `test`;
Я могу изменить структуру таблицы, например:
ALTER TABLE `test` CHANGE `test` `test_renamed` TINYINT(3) UNSIGNED NOT NULL;
И все последующие запросы для просмотра будет нарушено:
SELECT * FROM test_view;
#1356 - View 'test_view' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
Как предотвратить столбцы таблицы меняющихся если вид используется их ?
UPDATE: У меня есть Percona сервер 5.6.32-78.0
<"Я обычно использую скрипт, содержащий все виды, чтобы воссоздать их после изменения структуры базы данных." > Хм, это звучит интересно. Возможно, я могу разделить рабочий процесс миграции и сохранить миграции просмотров отдельно от общих миграций. И выполняйте их каждый раз, когда выполняется одна из общей миграции или после полного процесса миграции. – kivagant