利用mysql存储过程循环插入新数据并更新

利用mysql存储过程循环插入新数据并更新,第1张

DROP PROCEDURE IF EXISTS excute_job_v340

create procedure excute_job_v340()

begin 

        declare rdevid int//声明参数

        declare rech_id int

        declare slot int

        declare new_rech_id int

        declare new_price DOUBLE//声明参数

        declare done INT DEFAULT FALSE////声明结束标识参数

    --  声明游标

        DECLARE rdevrech_id CURSOR FOR

                select r.id as rdevid,r.rechargeconfig_id as rech_id,r.slot_no as slot from b_device_tbl dev

                LEFT JOIN r_device_rechargeconfig_tbl r on dev.id= r.device_id

                告裤where dev.dev_typedef_id =7 and dev.masterid is not NULL  and r.rechargeconfig_type=4 and r.is_deleted=0 and                 r.slot_no is not  NULL

-- 将结束标志绑定到游标

        DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE

-- 打开游标

        OPEN  rdevrech_id   

-- 遍历

        read_loop: LOOP

-- 取值

                FETCH  NEXT from rdevrech_id INTO rdevid,rech_id,slot

                IF done THEN

                        LEAVE read_loop

                END IF// 结束判断

             猛并   select price into new_price from c_device_rechargeconfig_item_tbl where rechargeconfig_id =rech_id limit 1

                INSERT INTO `c_device_rechargeconfig_tbl` (  `type`, `style_id`, `is_default`, `dev_type_code`, `is_deleted`,                 `create_time`, `slot_no`)

                VALUES ( '4', NULL, '0', '0', '0', '2019-08-19 15:59:24',slot )

                select max(id) into new_rech_id from c_device_rechargeconfig_tbl

                INSERT INTO  `c_device_rechargeconfig_item_tbl` (  `price`, `goods`, `description`, `is_deleted`, `create_time`,        袜知简                 `rechargeconfig_id` )

                        VALUES (  new_price,new_price, '0.00', '0', '2019-08-19 15:59:24', new_rech_id)

                update r_device_rechargeconfig_tbl set rechargeconfig_id=new_rech_id where id=rdevid

        END LOOP

        CLOSE rdevrech_id

end;

call excute_job_v340() //调用执行

方法如下:

1、首先打开Mysql命令行编辑器,连接Mysql数据库;

2、使用所要 *** 作的数据库,先显示一下数据库中的表;

3、显示一下表结构,了解一下表中的列;

4、向表插入数据,insert into 表名 (列名) values (值)

5、查询表可以看到所插入的数据,select * from 表名;

6、可以再插入一个数据,显示一下。

扩展资料

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。

MySQL是一种关系数据库管理系统,关系数据库将数据保存在盯野不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。

由于其社区版的性能卓越,搭配 PHP 和 Apache 可组成良好的开发环境。

与其他的大型数据库,例如 Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于 MySQL是开放源码软件,因此可以大大降低总体拥有成本。

Linux作为 *** 作系统,Apache 或Nginx作为 Web 服务器,MySQL 作为数据库,PHP/Perl/Python作为服务器端脚本解释器。由于这四个软件都是免费或开放源码软件(FLOSS),因此使用这种方式不用花一分钱(除开人工成本)就可以建立起一个稳定、免费的网站系统,被业界称为“LAMP“或“LNMP”组合。

MyISAMMySQL 5.0 之前的默认数据库引擎,最为常用。拥有较高的插入,查询速度,但不支持事务

InnoDB事务型数据库的首选引擎,支持ACID事务,支持行级锁定, MySQL 5.5 起成为默认数据库引擎

BDB源 自 Berkeley DB,事务型数据库的另一种选择,支持Commit 和Rollback 等其他事务特性

Memory所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率。但是会占用和数据量成正比的内存空间。并且其内容会在 MySQL 重新启动时丢失

Merge将一定数量的 MyISAM 表联合而成一个整体,在超大规模数据存储时很有用

Archive非常适合存储大量的独立的,作为历史记录的数据。因为它们不经常被读取。Archive 拥有高效的插入速度,但其对查询的支持相对较差

Federated将不同的 MySQL 服务器联合起来,逻辑上组成一个完整的数据库。非常适合分布式应用

Cluster/NDB高冗余的存储引擎,用多台数据机器联合提供服务以提高整体性能和安全源搭性。适合数据量大,安全和性能要求高的应用

CSV: 逻辑上由逗号分割数据的存储引擎。它会在数据库子目录里为每个数据表创建一个 .csv 文件。这是一种普通文本文件,每个数据行占用一个文本行。CSV 存储引擎不支持索引。

BlackHole:黑洞引擎,写入的任何数据都会消失,一般用于记录 binlog 做复制的中继

EXAMPLE 存储引擎是一个不做任何事情的存根凯裂喊引擎。它的目的是作为 MySQL 源代码中的一个例子,用来演示如何开始编写一个新存储引擎。同样,它的主要兴趣是对开发者。EXAMPLE 存储引擎不支持编索引。

另外,MySQL 的存储引擎接口定义良好。有兴趣的开发者可以通过阅读文档编写自己的存储引擎。

参考资料来源:百度百科:mySQL

方案一:

加个自增列,每次插入获取最后一行的行号(前提:插入数据不会被删除)

方案二:

使用触发器,每次插入后获取数据行数(并不推码慧荐该方案,因为入口是确定的,不会有多个)

方案三:悄纳

插入后程序获取数据行数,计算行数是否满足更新条件

个人觉得这样的需启模没求,应该不会有删除,不然之前变更也会没太大意义,因为被变更的数据也可能被删除,如果不会被删除,还是推荐方案一

另外,还可以插入时累计数据行数在程序中缓存起来,如果缓存没了,重新读一次,这样可以避免每次都查数据库,但是有个弊端,就是需要自己管理这个缓存


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11978959.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存