我创建了这样一个 View :
create view MyView as
select field1,
field2,
table2.*
from table1 join table2 ....
问题是当我向表 2 添加新列时,它不会出现在 View 中。当我执行 show create view MyView
时,我看到 table2 的字段在查询中展开,而不是 table2.*
保留在那里。
如何强制 MySQL 在创建 View 时不扩展 *
,而是推迟查询运行的扩展?
PS:只是好奇,如果 MySQL 不能这样做,其他数据库如 PostgreSQL 等是否允许这样做?
最佳答案
那是因为 MySQL 在 View 创建时扩展所有表(定义它们的字段),这是行为。
您可以在创建后使用 SHOW CREATE VIEW view_name
语句检查它。
因此,您需要重新创建 View 。
关于mysql - 如何在创建 View 时不扩展 `*`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22037343/