mysql - 为什么 MySQL Workbench 会为 View 生成占位符表?

标签 mysql database view mysql-workbench

在数据库模型中,我在 MySQL Workbench 中创建,我定义了一个 View 。现在,当我从图表(Menu -> Database -> Forward EngineerCtrl + G)生成 SQL 时,会为我的 View 创建此代码:

-- -----------------------------------------------------
-- Placeholder table for view `myview`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `myview` (...table columns...);
SHOW WARNINGS;

-- -----------------------------------------------------
-- View `myview`
-- -----------------------------------------------------
DROP VIEW IF EXISTS `myview` ;
SHOW WARNINGS;
DROP TABLE IF EXISTS `myview`;
SHOW WARNINGS;
DELIMITER $$
CREATE OR REPLACE VIEW `myview` AS

...view definition...

$$
DELIMITER ;

;
SHOW WARNINGS;


SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

为什么要创建这个占位符表?

谢谢

最佳答案

创建占位符(不仅由 WB,还例如由 mysqldump)来解决循环引用。 View 定义可以引用需要 View 的表(或需要最终需要初始 View 的 View 的表)。这无法自动检测或解决,除非通过定义虚拟 View (暂时作为表格,因为 View 在大多数方面都像表格)然后在所有其他对象可用时重新定义它们。

关于mysql - 为什么 MySQL Workbench 会为 View 生成占位符表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15417443/

相关文章:

php - 如何测试 SimpleXML 是否安装在我的 PHP 上?

我的布局中的 Android Canvas?

asp.net - 如何从我的 View (aspx 页面)中访问 ModelState?

php - MySQL 数据库接受远程连接,但不接受来自 PHP 的连接

database - 与 Derby 数据库交互时我的应用程序中的 SQLNonTransientConnectionException : No current connection,

java - 如何获取当前日期之前 30 天的数据。如何从mysql中的 session 和下一个数据( session +30)中获取两个日期一个日期

android - 复选框上的可扩展 View 单击 Android

mysql - 是否可以从 Laravel 中现有的电子邮件密码结构创建仅电子邮件身份验证

mysql - 在 MariaDB 数据库中授予权限

php - 在 php 中使用 $_request 变量更新数据库