Когда вы создаете
CREATE VIEW view1 AS SELECT * FROM table1
mysql меняет это внутренне на
CREATE VIEW view1 AS SELECT f1, f2, f3 FROM table1
Если вы добавите новый столбец f4 в таблицу1, в представлении1 все еще будут только первые три столбца. Вы должны воссоздать свое мнение. Это раздражает, если у вас много просмотров.
Есть ли способ заставить mysql сохранять SELECT * в объявлении вида, поэтому он всегда выбирает все поля независимо от того, изменилась ли таблица?
Короче говоря, нет. Это то, как MySQL обрабатывает представления внутренне.
Pro tip: не использовать представления. Это бедный человек, способный скрывать ненужную сложность за другой сложностью. Лучше просто сделать простой запрос, MySQL работает лучше.
MySql View не использует для возврата полное определение используемой базовой таблицы для возврата части таблиц с данными спецификации или marge.
V iews не будет иметь большого смысла без него. Принцип также применяется, если вы выберете из представления, которое выбирает из таблицы, если представление выбирает из таблицы в подзапросе, и представление оценивается с помощью алгоритма слияния. Обработка обработки не является оптимизировано. Вы можете видеть этот блог, чтобы узнать, что правильно с точки зрения MySql. Просмотр ограничений
MySql
имеет правильное поведение.
Когда вы создаете представление как SELECT * FROM table1
, MySql изменяет ваш код с полным списком полей.
Когда вы меняете структуру таблицы, представление должно быть изменено пользователем.
Если существует такое автоматическое поведение, вы можете создать проблему производительности при использовании представления.
Предположим, вы добавили 50 полей, и вы используете свое представление в форме, вы можете изменить нагрузку данных от 3 до 53 полей. Не хорошо.
Так что это правильно.