如何在视图创建时扩展`*`

时间:2014-02-26 09:41:02

标签: mysql sql views

我创建了一个像这样的视图:

create view MyView as
select field1,
       field2,
       table2.*
from table1 join table2 ....

问题是当我向table2添加新列时,它不会出现在视图中。当我执行show create view MyView时,我看到在查询中展开了table2的字段,而不是table2.*保留在那里。

如何在创建视图时强制MySQL不展开*,但推迟此扩展以进行查询运行?

PS:只是好奇,如果MySQL无法做到这一点,像PostgreSQL等其他数据库是否允许这样做?

1 个答案:

答案 0 :(得分:0)

这是因为MySQL在视图创建时扩展了所有表(定义了它们的字段),即行为。

您可以在创建后使用SHOW CREATE VIEW view_name声明进行检查。

因此,您需要重新创建视图。