两个表
1 vhinfo表
id name status
1 奔驰 Y
2 vhmaintain
id infoid stardate
1 1 2011-09-28 08:58:22
如果当前时间等于表2的stardate字段的时间name就把表1的status字段改为N。
这个存储过程应该怎么写 。急用 谢谢各位大虾
1 vhinfo表
id name status
1 奔驰 Y
2 vhmaintain
id infoid stardate
1 1 2011-09-28 08:58:22
如果当前时间等于表2的stardate字段的时间name就把表1的status字段改为N。
这个存储过程应该怎么写 。急用 谢谢各位大虾
SET GLOBAL event_scheduler = 1;
CREATE EVENT e_totals ON SCHEDULE AT '2011-09-27 120:00:00'
DO call dd();DROP PROCEDURE IF EXISTS `dd`$$CREATE PROCEDURE `dd`()
BEGIN
SELECT 1 INTO @aa FROM 表2 WHERE TIME(stardate)=TIME(NOW());
IF @aa=1 THEN
UPDATE 表1 a INNER JOIN 表2 b ON a.id=b.id SET a.status='N';
END IF;
END$$DELIMITER ;
DELIMITER $$create EVENT `e` ON SCHEDULE EVERY 1 SECOND STARTS '2011-09-28 11:32:24' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
SELECT 1 INTO @aa FROM 表2 WHERE TIME(stardate)=TIME(NOW());
IF @aa=1 THEN
UPDATE 表1 a INNER JOIN 表2 b ON a.id=b.id SET a.status='N';
END IF;
END$$DELIMITER ;
DELIMITER $$create EVENT `e` ON SCHEDULE EVERY 1 SECOND STARTS '2011-09-28 11:32:24' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
UPDATE 表1 a INNER JOIN 表2 b ON a.id=b.id SET a.status='N' WHERE TIME(stardate)=TIME(NOW()) ;
END$$DELIMITER ;
-- 顶,还需要注意一点:你数据库的事件定时执行功能是否已开启 ?
-- 用下面的方法查看:
-- 要使定时起作用 MySQL的常量GLOBAL event_scheduler必须为on或者是1-- 查看是否开启定时器
SHOW VARIABLES LIKE '%sche%'; -- 开启定时器 0:off 1:on
SET GLOBAL event_scheduler = ON; -- 开启事件
ALTER EVENT event_test ON
COMPLETION PRESERVE ENABLE; -- 关闭事件
ALTER EVENT event_test ON
COMPLETION PRESERVE DISABLE;
-- MySQL 查看EVENT 相关信息:
SELECT * FROM information_schema.EVENTS;
select `name` from mysql.proc where db = 'groupon' and `type` = 'PROCEDURE';
UPDATE 表1 a INNER JOIN 表2 b ON a.id=b.id SET a.status='N' WHERE TIME(stardate)=TIME(NOW()) ;
简单一些
如果你只是想在界面上显示,status 为N,则可以直接通过查询或者视图实现。select vhinfo.id,vhinfo.name,if(vhmaintain.stardate>=now(),'N','Y') as status
from vhinfo inner join vhmaintain on vhinfo.id=vhmaintain.infoid