MYSQL活动还是其他什么?试图跟踪“点击链接”

时间:2014-09-03 20:47:16

标签: php mysql

我一直在这个网站和谷歌,试图解决我的问题。

我创建了一个脚本来跟踪我们向会员销售的网站流量,一切都很好,并显示我们想要的所有数据。它甚至可以正确跟踪转换。

我目前的问题是 - 关闭流量已全部交付的记录(成员)的流量。

在阅读了一些文章之后,举办一个活动似乎很完美,但我似乎无法弄明白这一部分。

它还需要运行多次......

基本上,我不熟悉事件/触发器,不知道在这做什么

实施例;会员已购买1000次点击 - 所有已经交付,而不是将状态更改为已完成。

CREATE EVENT newEvent
ON SCHEDULE EVERY 1 Minute
DO
UPDATE links SET status = 'completed' WHERE bought = '0';

数据库结构:

ID - 增量

userid - 成员用户ID

已购买 - 显示剩余点击次数

计数 - 显示已投放的点击次数

pkgamount - 存储购买的点击次数

感谢。

2 个答案:

答案 0 :(得分:2)

不要使用事件调度程序,使用在更新links表时运行的触发器:

DELIMITER $$
CREATE TRIGGER link_completed
BEFORE UPDATE ON links
FOR EACH ROW
BEGIN
    IF NEW.bought = 0
    THEN SET NEW.status = 'completed';
    END IF;
END; $$
DELIMITER ;

答案 1 :(得分:1)

这是您创建和运行活动所需要做的事情。有一些非直观的猴子业务与分隔符,并打开事件调度程序。

DELIMITER $$

SET GLOBAL event_scheduler = ON$$     -- required for event to execute but not create    

CREATE EVENT `Event1`
ON SCHEDULE EVERY 5 MINUTE
ON COMPLETION PRESERVE
COMMENT 'disable delivery when quota used up'
DO
    BEGIN
        UPDATE links SET status = 'completed' WHERE bought = '0';
    END
$$
DELIMITER ;

请注意!您可能想说WHERE bought <= 0,以便在bought列上正确使用索引,以便在特定记录低于零时正确设置状态。

如果我是你,我会使用这个陈述。

        UPDATE links SET status = 'completed', bought = 0 WHERE bought <= 0;