Reputation: 159
Hi I am trying to create an event scheduler but I always get this error and I don't know why
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN END SET id = 0 WHILE id' at line 8
below is my code
DELIMITER |
CREATE EVENT `reset_kizuki`
ON SCHEDULE EVERY 1 MONTH STARTS '2017-02-01 00:00:00'
DO
BEGIN
DECLARE id INTEGER
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN END
SET id = 0
WHILE id < 12 DO
UPDATE kizuki
SET methodID_1 = 0, method1_date = NULL, methodID_2 = 0,
method2_date = NULL, is_PRM = 0 WHERE user_id = id
SET id = id + 1
END WHILE
END |
DELIMITER ;
and I somehow cannot put any ';' in my code
can anyone help me? Thank you
Upvotes: 0
Views: 667
Reputation: 4211
Create stored procedure first to make it more cleaner:
Create PROCEDURE proc_event_sample()
BEGIN
DECLARE id INTEGER;
SET id = 0;
while id<12 do
UPDATE kizuki SET methodID_1 = 0, method1_date = NULL, methodID_2 = 0,
method2_date = NULL, is_PRM = 0 where user_id = id;
SET id = id + 1;
end while;
END;
Then
CREATE EVENT `event_sample`
ON SCHEDULE EVERY 1 SECOND STARTS '2016-04-21 00:00:00'
ON COMPLETION NOT PRESERVE ENABLE DO
call proc_event_sample()
You can test the procedure wisely by:
call proc_event_sample()
Upvotes: 1
Reputation: 17665
Your code syntaxs correctly for me (doesn't mean it works) with ; in all the right places
drop event if exists `reset_kizuki`;
DELIMITER |
CREATE EVENT `reset_kizuki`
ON SCHEDULE EVERY 1 MONTH STARTS '2017-02-01 00:00:00'
DO
BEGIN
DECLARE id INTEGER;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN END;
SET id = 0;
WHILE id < 12 DO
UPDATE kizuki
SET methodID_1 = 0, method1_date = NULL, methodID_2 = 0,
method2_date = NULL, is_PRM = 0 WHERE user_id = id;
SET id = id + 1;
END WHILE;
END |
DELIMITER ;
Upvotes: 0