Mysql 如何使用msql安排事件
我正在尝试创建一个每1小时执行一次的事件 这是代码Mysql 如何使用msql安排事件,mysql,events,Mysql,Events,我正在尝试创建一个每1小时执行一次的事件 这是代码 mysql> DROP EVENT IF EXISTS `clean`; CREATE EVENT IF NOT EXISTS `clean` ON SCHEDULE EVERY 1 HOUR STARTS '2017-07-07 16:00.00' DO SET @isTime = IF(table_name.programed_time = N
mysql> DROP EVENT IF EXISTS `clean`;
CREATE EVENT IF NOT EXISTS `clean`
ON SCHEDULE
EVERY 1 HOUR
STARTS '2017-07-07 16:00.00'
DO
SET @isTime = IF(table_name.programed_time = NOW(), 'y', 'n');
IF @isTime = 'y' THEN DELETE FROM `cell_name`
WHERE `cell_name` = 'value'
我希望活动只在周一16:00举行。因此,在我的应用程序中,我有代码将每个月的第一个星期一的日期保存在表中的16:00
但是当我运行这个查询时,出现了这个错误
Unknown type of declaration near to IF.
Something is wrong in its syntax near 'IF @isTime ='y'
THEN DELETE FROM `cell_name` WHERE `cell_name 'in the line
有人会告诉我我做错了什么。在mysql中安排事件需要了解触发器是如何工作的。只要看看这个详细的教程,我相信它会有很大的帮助 或者
基于你的问题,我真的相信cronjob最适合你的需要。看看这篇文章 mysql中事件的调度需要您了解触发器是如何工作的。只要看看这个详细的教程,我相信它会有很大的帮助 或者
基于你的问题,我真的相信cronjob最适合你的需要。看看这篇文章 由于您的事件有多条语句,您的问题可能是您需要将定义转换为以下内容:
DELIMITER $$
CREATE EVENT IF NOT EXISTS `clean` ON SCHEDULE EVERY 1 HOUR STARTS '2017-07-07 16:00.00'
DO
BEGIN
DECLARE isTime CHAR(1);
SET isTime := IF(table_name.programed_time = NOW(), 'y', 'n');
IF isTime = 'y' THEN
DELETE FROM `cell_name` WHERE `cell_name` = 'value';
END IF;
END$$
DELIMITER ;
基本上,将主体括在
BEGIN。。。结束
由于您的事件有多条语句,您的问题可能是您需要将定义转换为以下内容:
DELIMITER $$
CREATE EVENT IF NOT EXISTS `clean` ON SCHEDULE EVERY 1 HOUR STARTS '2017-07-07 16:00.00'
DO
BEGIN
DECLARE isTime CHAR(1);
SET isTime := IF(table_name.programed_time = NOW(), 'y', 'n');
IF isTime = 'y' THEN
DELETE FROM `cell_name` WHERE `cell_name` = 'value';
END IF;
END$$
DELIMITER ;
基本上,将主体括在
BEGIN。。。结束
我找到了做我想做的事情的最佳方法,而不必创建变量或在数据库中存储日期
这是我使用的代码
DROP EVENT IF EXISTS `clean`;
DELIMITER //
CREATE EVENT IF NOT EXISTS `clean`
ON SCHEDULE
EVERY 1 DAY
STARTS '2017-01-27 16:00.00'
COMMENT 'EVENT runs daily at 4 pm. DELETE executed first Monday month'
DO
BEGIN
IF (DAYOFMONTH(NOW()) BETWEEN 1 AND 7 AND
DAYNAME(NOW()) = 'Monday') THEN
DELETE FROM `table_name`
WHERE `cell_name` = 'value';
END IF;
END//
DELIMITER ;
我找到了做我想做的事情的最佳方法,而不必创建变量或在数据库中存储日期 这是我使用的代码
DROP EVENT IF EXISTS `clean`;
DELIMITER //
CREATE EVENT IF NOT EXISTS `clean`
ON SCHEDULE
EVERY 1 DAY
STARTS '2017-01-27 16:00.00'
COMMENT 'EVENT runs daily at 4 pm. DELETE executed first Monday month'
DO
BEGIN
IF (DAYOFMONTH(NOW()) BETWEEN 1 AND 7 AND
DAYNAME(NOW()) = 'Monday') THEN
DELETE FROM `table_name`
WHERE `cell_name` = 'value';
END IF;
END//
DELIMITER ;
你需要阅读mysqlNo中的触发器在MySQL中没有这样的东西。@sloatherasher没有什么这样的东西?MySQL有触发器和事件已经有一段时间了。你需要阅读MySQL中的触发器。MySQL中没有这样的东西。@Sloachr没有什么这样的东西?MySQL已经有触发器和事件一段时间了。在分析过程中发现了2个错误。日期类型未知。(位置171的“如果”附近)日期类型未知。(靠近255位的“结束”)我的东西有语法错误。是的,这就是为什么我说“类似”。。。我很少处理事件,但回想起来它们声明类似于例程和触发器。您也可以尝试使用局部变量,而不是会话(@前缀)变量。我无法在事件中声明变量。我不知道为什么。在分析过程中发现了2个错误。日期类型未知。(位置171的“如果”附近)日期类型未知。(靠近255位的“结束”)我的东西有语法错误。是的,这就是为什么我说“类似”。。。我很少处理事件,但回想起来它们声明类似于例程和触发器。您也可以尝试使用局部变量,而不是会话(@前缀)变量。我无法在事件中声明变量。我不知道为什么。谢谢你的提示。谢谢你的提示。