我有一個表..創建視圖動態的MySQL
此表被用新的記錄,每次從客戶端的用戶進行更新。
我想要的是爲team_id的所有不同值創建一個視圖,team_id的值不固定..可以在1-16範圍內,在另一個時間範圍1-8 ..在任何範圍內..
所以我想是對每一條記錄(視圖名稱爲:view_of_team + NEW.team_id)動態地創建視圖(=>觸發器)插入此表..
我試圖執行創建視圖的語句在後插入觸發器,但MySQL不僅僅是創建觸發器..然後,我在從插入觸發器後調用一個程序時降落
CREATE DEFINER=`root`@`localhost` PROCEDURE `create_view_if_not_exists_stored_proc`(IN `team_id` INT) NOT DETERMINISTIC MODIFIES SQL DATA SQL SECURITY DEFINER
if not exists(select TABLE_SCHEMA,TABLE_NAME from information_schema.tables where TABLE_TYPE like 'VIEW' and TABLE_NAME like concat('view_of_team', team_id)) then
SET @ViewName = concat('view_of_team', cast(team_id as char(50)));
SET @sql = concat('create view ', @ViewName, ' as select * from mini_events_score_log where team_id=', team_id);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
end if
和刀片觸發上面
在我phpMyAdmin的單獨執行程序中所示的表之後內部使用CALL create_view_if_not_exists_stored_proc(NEW.team_id)
創建視圖,但該錯誤出現了:「動態SQL中存儲的功能或觸發器不允許」時插入之後執行觸發新紀錄..
有沒有辦法在這種情況下,動態地創建視圖..
啊哈ThankYou的答覆,即使我想沒有這樣的意見..但..實際上,當插入記錄在基表中,有很多混亂和其他東西在實時發生,所以想讓它很容易DBA會自動過濾每個不同團隊的記錄......如果他在查詢中編寫並編輯值並在每次他想僅查看基本1k條記錄中所需團隊數據時觸發它,將會非常不方便表 – ritesht93
好吧,它要麼寫一個WHERE子句來指定一個給定的team_id值,要麼寫一個完整的*不同的查詢*來爲相應的團隊讀取正確的視圖。我不相信任何DBA會覺得前者很困難。 –