我正在尝试在生产型电子商务商店中安装触发器,以便将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,并且该代码仍然运行了很多次。
有人可以帮我吗?
谢谢!