繁体   English   中英

MYSQL EVENT还是其他? 尝试跟踪“链接点击”

[英]MYSQL EVENT or Something else ? trying to track “clicks for links”

我到过这个网站和Google,一直在想办法解决问题。

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

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

阅读一些文章后,运行事件似乎很完美,但是我似乎无法弄清楚这部分。

它还需要运行多次...

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

例; 会员购买了1000次点击-全部已交付,但未更改状态为完成。

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

数据库结构:

ID-增量

userid-成员userid

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

计数-显示获得的点击

pkgamount-存储购买的点击次数

谢谢。

不要使用事件调度程序,请使用在更新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 ;

这是创建和运行事件所需的操作。 有一些非直觉的猴子业务,带有定界符和打开事件调度程序。

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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM