满口金牙 2023-03-09 18:00 采纳率: 91.1%
浏览 141
已结题

插入的一条数据,5分钟后mysql自动删除,请教!

目的: 插入的一条数据, 在5分钟后, mysql 自动删除'
** 如果每分钟执行进行检索事件 删除,肯定可行,但占用资源**

报错:1576
即使下面提了多个方法,绕开在 触发器中写 事件, 但是表格插入数据时,还是报错 1336 - Dynamic SQL is not allowed in stored function or trigger
请教:怎么正确地实现这一目的.
您能不能试先执行一下

ChatGTP 我已找了,没找到解决问题的方法

-- 创建触发器
DROP TRIGGER IF EXISTS phone_verily_code;
CREATE TRIGGER phone_verily_code AFTER INSERT ON table1 
FOR EACH ROW
BEGIN
    DECLARE event_name VARCHAR(100);
        -- 随机生成 事件的名字
    SET event_name = REPLACE(UUID(),'-','');
    -- 创建5分钟后删除这条数据 的事件
    CREATE EVENT IF NOT EXISTS event_name ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 5 MINUTE
      -- 执行删除
    DO DELETE FROM table1 WHERE id= new.id;
END;


报错信息:
> 1576 - Recursion of EVENT DDL statements is forbidden when body is present
> 查询时间: 0.02s
  • 写回答

10条回答 默认 最新

  • pzzhao 2023-03-09 20:21
    关注

    我看你好像是要实现手机号验证码有效期的功能,这个功能一般都是通过redis或者本地缓存的有效期去实现,你这里为啥一定要用数据库呢,你这样做反而会增加数据的负担,另外也可以不用通过触发器去删除,可以在验证码表加一个有效期的字段,获取的时候只获取在有效期内的验证码,如果担心数据量过多,也可以在日终定时任务去删除昨日的验证码

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(9条)

报告相同问题?

问题事件

  • 系统已结题 3月18日
  • 已采纳回答 3月10日
  • 修改了问题 3月9日
  • 修改了问题 3月9日
  • 展开全部

悬赏问题

  • ¥15 有没有整苹果智能分拣线上图像数据
  • ¥20 有没有人会这个东西的
  • ¥15 cfx考虑调整“enforce system memory limit”参数的设置
  • ¥30 航迹分离,航迹增强,误差分析
  • ¥15 Chrome Manifest扩展引用Ajax-hook库拦截请求失败
  • ¥15 用Ros中的Topic通讯方式控制小乌龟的速度,走矩形;编写订阅器代码
  • ¥15 LLM accuracy检测
  • ¥15 pycharm添加远程解释器报错
  • ¥15 如何让子窗口鼠标滚动独立,不要传递消息给主窗口
  • ¥15 如何能达到用ping0.cc检测成这样?如图