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

插入的一条数据,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 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码