2013-03-14 62 views
3

在一個數據庫模型中,我在MySQL Workbench中創建了一個視圖。現在當我從diagramm(Menu -> Database -> Forward EngineerCtrl + G)生成的SQL中,爲我的視圖中創建此代碼:爲什麼MySQL Workbench爲視圖生成佔位符表?

-- ----------------------------------------------------- 
-- 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 [email protected]_SQL_MODE; 
SET [email protected]_FOREIGN_KEY_CHECKS; 
SET [email protected]_UNIQUE_CHECKS; 

爲什麼這個佔位符表創建?

THX

回答

3

佔位符被創建(不僅由WB而且例如通過mysqldump的)來解決循環引用。一個視圖定義可以引用一個需要視圖的表(或者一個表,這個表需要一個表來請求一個最終需要初始視圖的視圖)。除非通過定義虛擬視圖(暫時作爲表格,因爲視圖在大多數方面(如表格)),然後在所有其他對象可用時對其重新定義,否則不能自動檢測或解決此問題。

相關問題