运行mysql触发器时多个IF

时间:2018-12-29 03:11:15

标签: mysql triggers

我正在尝试在生产型电子商务商店中安装触发器,以便将NPS调查发送给已收到订单的所有客户。 为此,我首先想到了每次将订单标记为current_state = delivery时,都在表中收集所有用户ID。但是,当我使用后台将订单传递到该状态时,系统会在订单表上运行许多更新操作,从而在NPS表中多次插入相同的用户ID。 得知我可以在触发器中放入多个IF条件后不久,如下所示:

DELIMITER //

drop trigger if exists insert_nps_target 
CREATE TRIGGER insert_nps_target 
after update 
on ps_orders

FOR EACH ROW 
BEGIN
    IF old.current_state='5' AND (select count(*) from ps_nps n where id_customer=OLD.id_customer and 'n.date_sent' >=  UNIX_TIMESTAMP(NOW() - INTERVAL 3 MONTH)) = 0  THEN
        INSERT into ps_nps(id_customer) values (old.id_customer);
    end if;
end;//
DELIMITER ;

但是此代码似乎总是被评估为true,并且该代码仍然运行了很多次。

有人可以帮我吗?

谢谢!

0 个答案:

没有答案