2014-06-29 47 views
0

我在分配MySQL触发器中的类型date变量时遇到了一些麻烦。当我尝试将我的变量与当前日期进行比较时,它无法正常工作。来自查询的日期变量赋值

CREATE TRIGGER actualizar_numero_sesiones AFTER INSERT ON registroingresos 
    FOR EACH ROW 
    BEGIN 
    DECLARE d date; 
    DECLARE vigente INT(11); 
    DECLARE vencido INT(11); 
    DECLARE state varchar(10); 
    select p.fecha_fin into d from compra_paquete cp, paquetes p where cp.ci = new.ci AND   p.idpaquete = cp.idpaquete; 
    SET vencido = d > CURDATE(); 
    SET vigente = d < CURDATE(); 
    IF (vencido = 1) THEN 
     SET state = 'Vencido'; 
    IF ELSE(vigente = 1) THEN 
     SET state = 'Vigente'; 
    END IF; 
END; 

,我指定变量d查询是从“paquetes”表中的日期值的问题是,d变量的赋值它不能正常工作,因为我知道这是fecha_fin ='2012相比日期-04-06'和CURDATE()在fecha_fin之后,状态值应该是“vencido”,但它是“vigente”

回答

0

变量status是什么?

您可以简化它有点用下面的语句:

... 
SET `state` := (
    SELECT IF(`p`.`fecha_fin` > CURDATE(), 'Vencido', 'Vigente') 
    FROM `compra_paquete` `cp`, `paquetes` `p` 
    WHERE `cp`.`ci` = NEW.`ci` AND `p`.`idpaquete` = `cp`.`idpaquete` 
); 
... 

SQL Fiddle example

+0

感谢的是解决我的问题(Y) – quique