2011-03-09 48 views
2

我想從MySQL執行存儲過程 CREATE EVENT sql。如何使用隨機事件名稱從存儲過程創建事件?

  • 我不能備使用,因爲CREATE EVENT是不允許在準備,我想用一個隨機的名字,因爲我需要創造一個獨特的事件,我需要通過一些日期PARAMS在辦節。
  • MySQL沒有EXEC。

的SQL構建這樣的:

SET @sql=CONCAT('CREATE EVENT myevent',md5(concat(@dt1,@dt2)),' ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 0 SECOND 
       DO 
        call genRoutes(''',@dt1,''',''',@dt2,'''); 
       '); 

生成@sql查詢看起來像:

CREATE EVENT myeventcadb1e41722fb3c9b2e6992e740d76ca ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 0 SECOND 
DO 
    call genRoutes('2011-04-07 00:00:00','2011-04-14 00:00:00'); 

Server版本5.1.31社區

如何做到這一點在存儲過程中?

回答

1

如果你不能直接這樣做,也許你可以在表中存儲對genRoutes(或其他)的即將調用,並使用單個事件來管理下一個調用。任何時候你添加到即將發生的呼叫表中,如果新的呼叫比表中最早的呼叫更早,你可以調用改變事件在新的時間觸發。當事件觸發時,調用所有已準備好的事件,將它們從表中刪除,並更改事件以在下一次最快的呼叫時觸發。

或者,您可以只觸發一個小時,15分鐘,5分鐘(或其他)的事件並輪詢表以準備調用。

+0

生成唯一的genRoutes名稱非常困難,因爲它們將根據不斷變化的日期範圍進行構建。 – Pentium10 2011-03-18 18:30:27