在数据库模型中,我在 MySQL Workbench 中创建,我定义了一个 View 。现在,当我从图表(Menu -> Database -> Forward Engineer
或 Ctrl + 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/