美文网首页开发经验随笔码农的世界程序员
MySQL存储过程的-delete不执行事件

MySQL存储过程的-delete不执行事件

作者: 山东大葱哥 | 来源:发表于2019-08-10 00:25 被阅读14次

因为需要做性能测试,需要准备一些初始数据,打算用存储过程来实现。于是写了一个MySQL的存储过程进行数据灌入,里面的逻辑比较简单,现清理数据,然后开始灌入数据的循环。
经过简化后的存储过程:

delimiter $$
drop procedure if exists good_generate;
CREATE DEFINER=`root`@`localhost` PROCEDURE `good_generate`(IN num INT)
BEGIN   
    DECLARE id int DEFAULT(1);
    DELETE from `tb_goods` where `id` > 149187842867961; -- 删除新增的数据     
    WHILE id <= num DO      
        INSERT INTO `tb_goods`(`seller_id`, `goods_name`,  `audit_status`, `caption`, `price`) VALUES ('baidu', 'name', '1','副标题打折促销中',   100.11);
        set id=id+1;
    END WHILE;
    
END $$

调用存储过程:

-- 停掉事务
set autocommit = 0;  
-- 调用存储过程
call good_generate(10);
-- 重启事务
set autocommit = 1;  
SELECT *  from tb_goods where id > 149187842867961;

运行效果:

-- 停掉事务
set autocommit = 0
> OK
> 时间: 0.003s


-- 调用存储过程
call good_generate(10)
> OK
> 时间: 0.011s


-- 重启事务
set autocommit = 1
> OK
> 时间: 0.538s


SELECT *  from tb_goods where id > 149187842867961
> OK
> 时间: 0.004s

查询结果:


image.png

可见数据并没有删除。

把insert相关语句删除掉的单独执行清理的存储过程,经过试验可以正常删除数据,这说明既有insert又有delete时有问题,delete不能执行。

如果把delete后的where条件删除掉,发现也可以正确执行,但我的情况是不能删除已有的数据,只能删除通过存储过程添加的数据。

相关文章

  • MySQL存储过程的-delete不执行事件

    因为需要做性能测试,需要准备一些初始数据,打算用存储过程来实现。于是写了一个MySQL的存储过程进行数据灌入,里面...

  • MySQL之如何使用触发器

    触发器:它是一个特殊的存储过程,它是MySQL在insert、update、delete的时候执行,自动执行,不能...

  • 简述触发器、函数、视图、存储过程

    触发器:触发器是一个特殊的存储过程,它是MySQL在insert、update、delete的时候自动执行的代码块...

  • 存储过程

    创建存储过程 mysql: 执行存储过程 mysql: 使用OUT参数和INOUT参数: PREPARE和EXEC...

  • mysql 技术点汇总

    MYSQL存储引擎介绍 索引 mysql 执行过程 mysql 语句解析过程 https://www.cnblog...

  • MySQL存储过程和存储函数

    一、存储过程 MySQL存储过程存储过程和存储函数参考文章 SQL语句需要先编译然后执行,而存储过程(Stored...

  • MySQL 视图和存储程序

    MySQL 视图和存储程序 存储程序:存储函数、存储过程、触发器和事件的总称。 存储例程:存储函数+存储过程。 触...

  • 存储过程&触发器

    --创建存储过程 --调用存储过程 --查看存储过程 --删除存储过程 --after 触发器 操作之后执行事件 ...

  • MySQL-触发器

    MySQL 数据库中触发器是一个特殊的存储过程,不同的是执行存储过程要使用 CALL 语句来调用,而触发器的执行不...

  • mysql存储过程+事件 执行定时任务

    mysql怎么让一个存储过程定时执行查看event是否开启: show variables like '%sche...

网友评论

    本文标题:MySQL存储过程的-delete不执行事件

    本文链接:https://www.haomeiwen.com/subject/hcvtjctx.html