mysql - 如何在创建 View 时不扩展 `*`

标签 mysql sql view

我创建了这样一个 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/

相关文章:

php - 通过不使用不同查询的 PHP MYSQL 循环创建 JSON

php - 如何在 php 中使用 sql 内连接进行选择

sql - 存储内容翻译的有效方法?

php - 无法返回 PHP 上的 SQL 选择计数

iphone - NSString 不会在类之间传递

php - 如何创建使用页眉​​和页 footer 分的布局

MySQL:从 MySQL 过程调用获取结果

mysql - 获取mysql中所有输出的单个值和总和

c# - Linq 外连接与 where,需要帮助先选择

java - 带有动画的 WindowManager(可能吗?)