2017-08-03 44 views
0

我試圖創建此事件,但我找不到語法錯誤。語法錯誤與MySql事件

CREATE 
EVENT respaldoRegRawInformeAperturaLocal 
ON SCHEDULE EVERY 1 DAY STARTS '2017-08-03 22:00:00' 
DO BEGIN 

    -- INSERT INTO BACKUP TABLE 
    INSERT INTO regRawInformeAperturaLocalBACKUP (regRawInformeAperturaLocalId, rawInformeAperturaLocal, done, date, deviceId) 
    -- GET DATA 
    SELECT regRawInformeAperturaLocalId, rawInformeAperturaLocal, done, date, deviceId 
    FROM regRawInformeAperturaLocal 
    WHERE regRawInformeAperturaLocal.date < DATE_SUB(NOW(), INTERVAL 5 MONTH); 

    -- DELETE DATA FROM ORIGINAL TABLE 
    DELETE FROM regRawInformeAperturaLocal WHERE regRawInformeAperturaLocal.date < DATE_SUB(NOW(), INTERVAL 5 MONTH); 

END; 

[CODE EDIT 1]

CREATE 
EVENT respaldoRegRawInformeAperturaLocal 
ON SCHEDULE EVERY 1 DAY STARTS '2017-08-03 22:00:00' 
DO BEGIN 

    -- INSERT INTO BACKUP TABLE 
    INSERT INTO regRawInformeAperturaLocalBACKUP (regRawInformeAperturaLocalId, rawInformeAperturaLocal, done, date, deviceId) 
    -- GET DATA 
    SELECT regRawInformeAperturaLocalId, rawInformeAperturaLocal, done, date, deviceId 
    FROM regRawInformeAperturaLocal 
    WHERE date < DATE_SUB(NOW(), INTERVAL 5 MONTH); 

    -- DELETE DATA FROM ORIGINAL TABLE 
    DELETE FROM regRawInformeAperturaLocal WHERE date < DATE_SUB(NOW(), INTERVAL 5 MONTH); 

END; 

[編輯] 這是語法錯誤消息:

[錯誤] 1064 - 你在你的SQL語法錯誤;檢查對應於你的MySQL服務器版本在第11

+1

發佈錯誤.. –

+0

已更新。它表示它在這個字符串上:「WHERE regRawInformeAperturaLocal.date

+0

爲什麼'regRawInformeAperturaLocal.date',不僅是'date'? –

回答

1

使用「」附近正確語法手冊,我可以讓它工作:

我必須添加DELIMITER,改變構造結從END;END |

反正這裏的代碼:

DELIMITER | 
CREATE 
    EVENT IF NOT EXISTS respaldoRegRawInformeAperturaLocal 
    ON SCHEDULE EVERY 1 DAY STARTS '2017-08-03 22:00:00' 
    DO BEGIN 

    -- INSERT INTO BACKUP TABLE 
    INSERT INTO regRawInformeAperturaLocalBACKUP (regRawInformeAperturaLocalId, rawInformeAperturaLocal, done, date, deviceId) 
    -- GET DATA 
    SELECT regRawInformeAperturaLocalId, rawInformeAperturaLocal, done, date, deviceId 
    FROM regRawInformeAperturaLocal 
    WHERE date < DATE_SUB(NOW(), INTERVAL 5 MONTH); 

    -- DELETE DATA FROM ORIGINAL TABLE 
    DELETE FROM regRawInformeAperturaLocal WHERE date < DATE_SUB(NOW(), INTERVAL 5 MONTH); 

END| 
DELIMITER ; 

現在我要測試,但我可以創建它,所以我想這是很好。

[編輯] 這個活動就像一個魅力。