MySQL Cursors:一个Trigger中,同时存在两个cursors的问题。

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:
+关注继续查看
我在MySQl的帮助文档中看到游标可以嵌套使用:
CREATE PROCEDURE curdemo()
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM test.t1;
DECLARE cur2 CURSOR FOR SELECT i FROM test.t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO test.t3 VALUES (a,b);
ELSE
INSERT INTO test.t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
END
可是我的两个cursor中的东西毫不关联,而且也没有可比性。
也就是说,如果一个中已经没数据了,可是另一个才刚开始。那么会怎么样?
我记得
“DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;”
的意思是;当取不到数据就 SET done = 1;
也就是我的另一个中的数据还没有取完就被结束了。
那么谁见过/写过最NB的cursor,给几个例子看看。
因为我需要对一张表在insert后,判断并且操作另外的两张表。
(这个设计是不是太BT了,我也不想这样,被设计成这样了,所以这能适应了。)
需要用cursor吧把另外两张表的中的数据取出和insert的数据进行比较。


本文转自叶金荣51CTO博客,原文链接:http://blog.51cto.com/imysql/308284,如需转载请自行联系原作者
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2天前
|
存储 关系型数据库 MySQL
LINUX中的mysql(一)安装
MySQL是一种常用的开源关系型数据库管理系统,广泛应用于Linux系统中。它提供了一个灵活、高效和可扩展的数据库解决方案,被许多应用程序和网站用于存储和管理数据。
30 0
|
3天前
|
前端开发 关系型数据库 MySQL
J2EE项目部署与发布(Linux版本)->jdk&tomcat安装,MySQL安装,后端接口部署,linux单体项目前端部署
J2EE项目部署与发布(Linux版本)->jdk&tomcat安装,MySQL安装,后端接口部署,linux单体项目前端部署
23 0
|
3天前
|
关系型数据库 MySQL Java
Linux系统jdk&Tomcat&MySQL安装以及J2EE后端接口部署
Linux系统jdk&Tomcat&MySQL安装以及J2EE后端接口部署
29 0
|
3天前
|
关系型数据库 MySQL 数据库
MySQL安装
MySQL安装
18 0
|
18天前
|
关系型数据库 MySQL
Mysql Trigger触发器学习总结
Mysql Trigger触发器学习总结
11 0
|
关系型数据库 MySQL 数据库
|
关系型数据库 MySQL 数据库
MySQL 基础---触发器(TRIGGER)
触发器: 实现由一些表事件触发的某个操作,是与数据库对象表关联最紧密的数据库对象之一。在数据库系统中,当执行表事件时,则会激活触发器,从而执行其包含的操作。
769 0
|
关系型数据库 MySQL SQL
mysql之触发器trigger
mysql之触发器trigger 触发器(trigger):监视某种情况,并触发某种操作。 触发器创建语法四要素:1.监视地点(table) 2.监视事件(insert/update/delete) 3.触发时间(after/before) 4.触发事件(insert/update/delete) 语法: create trigger triggerName after/before insert/update/delete on 表名 for each row   #这句话在mysql是固定的 begin sql语句; end; 注:各自颜色对应上面的四要素。
860 0
推荐文章
更多