我写了一个触发器有时不执行
CREATE TRIGGER tri_mem_recover_date_add
BEFORE INSERT ON ac_flow_dispose_info
FOR EACH ROW begin
if(new.recover_date is not null ) THEN
if( UNIX_TIMESTAMP(new.recover_date)>=UNIX_TIMESTAMP(CONCAT(DATE(new.recover_date)," 08:30:00")) and UNIX_TIMESTAMP(new.recover_date)<=UNIX_TIMESTAMP(CONCAT(DATE(new.recover_date)," 17:30:00"))) then
set new.mem_recover_date=DATE_ADD(new.recover_date,INTERVAL -2 HOUR);
elseif(UNIX_TIMESTAMP(new.recover_date)<UNIX_TIMESTAMP(CONCAT(DATE(new.recover_date)," 08:30:00")))then
set new.mem_recover_date=CONCAT(date(DATE_SUB(new.recover_date,INTERVAL 1 DAY)),' 16:00:00');
else
set new.mem_recover_date=CONCAT(date(new.recover_date),' 16:00:00');
end if;
end if;
END;
CREATE TRIGGER tri_mem_recover_date
BEFORE UPDATE ON ac_flow_dispose_info
FOR EACH ROW begin
if(new.recover_date is not null && old.recover_date!= new.recover_date ) THEN
if( UNIX_TIMESTAMP(new.recover_date)>=UNIX_TIMESTAMP(CONCAT(DATE(new.recover_date)," 08:30:00")) and UNIX_TIMESTAMP(new.recover_date)<=UNIX_TIMESTAMP(CONCAT(DATE(new.recover_date)," 17:30:00"))) then
set new.mem_recover_date=DATE_ADD(new.recover_date,INTERVAL -2 HOUR);
elseif(UNIX_TIMESTAMP(new.recover_date)<UNIX_TIMESTAMP(CONCAT(DATE(new.recover_date)," 08:30:00")))then
set new.mem_recover_date=CONCAT(date(DATE_SUB(new.recover_date,INTERVAL 1 DAY)),' 16:00:00');
else
set new.mem_recover_date=CONCAT(date(new.recover_date),' 16:00:00');
end if;
end if;
END;