iis服务器助手广告
返回顶部
首页 > 资讯 > 数据库 >MySQL数据篇(九)-
  • 124
分享到

MySQL数据篇(九)-

MySQL数据篇(九)- 2021-12-29 10:12:30 124人浏览 才女
摘要

需求:有一个活动记录表 t_ad ,商家每次发起一个活动,就会在 t_shake_devices_relation 表里面生成一些关联记录。现在写一个存储过程实现,如果活动过期,就将关联表里面的数据标记删除。 代码如下: BEGIN

需求:有一个活动记录表 t_ad ,商家每次发起一个活动,就会在 t_shake_devices_relation 表里面生成一些关联记录。现在写一个存储过程实现,如果活动过期,就将关联表里面的数据标记删除。

代码如下:

BEGIN
    
    
    #定义变量
    DECLARE done INT;#游标标记
    DECLARE timestampTmp INT;#当前时间戳
    DECLARE ad_id INT;#需要清除的广告活动id
    DECLARE ad_ad_type INT;#广告类型1
    DECLARE ad_ad_location INT;#广告类型2
    DECLARE devices_ad INT;#设备关联表需要清除的广告活动id
    DECLARE err INT; #是否有sql错误
    
    

    #创建游标,并且存储数据,获取未处理,已结束的广告活动id
    DECLARE cur_ad CURSOR
                    FOR
                    SELECT id,ad_type,ad_location FROM t_ad WHERE is_handle = 0 AND end_time < timestampTmp LIMIT 500;
    
    #游标中的内容执行完后将done设置为1
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
    #检查sql是否有错
    DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET err=1; 

    #赋值当前时间
    SET timestampTmp = UNIX_TIMESTAMP();

    #打开游标
    OPEN cur_ad;

    #执行循环
    posLoop:LOOP
            
                #游标结束或者SQL错误,结束循环
                IF done = 1 or err = 1 THEN
                        LEAVE    posLoop;
                END IF;

                #取游标中的值
                FETCH    cur_ad INTO    ad_id,ad_ad_type,ad_ad_location;

                #查询数据,判断是否需要修改
                SELECT    COUNT(1) INTO    devices_ad FROM t_shake_devices_relation WHERE    relation_id = ad_id AND is_deleted = 0;
                
                #存在即修改
                IF devices_ad > 0 THEN
                        UPDATE t_shake_devices_relation SET is_deleted = 1 WHERE relation_id = ad_id;
                        
                        #修改成功后标记t_ad表为已处理
                        IF ROW_COUNT() > 0 THEN
                                UPDATE t_ad SET is_handle = 1 WHERE id = ad_id;
                        END IF;

                END IF;
    
    #结束循环
    END    LOOP posLoop;

    #释放游标
    CLOSE    cur_ad;
END

 

您可能感兴趣的文档:

--结束END--

本文标题: MySQL数据篇(九)-

本文链接: https://www.lsjlt.com/news/2391.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作