mysql数据库触发器(MySQL中使用游标触发器的方法)
类别:数据库 浏览量:1813
时间:2021-10-23 10:53:22 mysql数据库触发器
MySQL中使用游标触发器的方法游标
select检索返回的一组行称为结果集,结果集里的行都是根据你输入的sql语句检索出来的,如果不使用游标,你将没有办法得到第一行,前十行或者是下一行
下面是一些常见的游标现象和特性
- 能够标记游标为只读,是数据能够读取,但不能被更新或者删除
- 能控制可以执行的定向操作(向前,向后,第一,最后、绝对位置和相对位置等)
- 能标记某些行为可编辑的,而另一些行为不可编辑的
- 能规定范围,使游标对创建它的特定请求或者是所有请求可访问
- Cursor declarations must appear before handler declarations and after
- variable and condition declarations.
- 需要注意的是,打开一个游标时,游标并不指向第一条记录,而是指向第一条记录的前边
下面是使用游标的步骤
- 声明游标 – 在这个过程中你还没有开始检索数据
- 打开游标以供使用
- 检索各行
- 关闭游标,释放游标
|
DECLARE cs CURSOR FOR SELECT * FROM customers WHERE cust_email IS NULL ; |
本以为万事大吉,但却给我报错
从语法上来看没有什么问题
试着在 cs 前面加上@,运行仍然报错
还有人说游标只能在存储过程中使用,是这样吗?
现在我们来试一试在存储过程中使用游标
|
CREATE PROCEDURE proce1 () BEGIN DECLARE cur1 CURSOR FOR SELECT * FROM customers WHERE cust_id IS NULL tianyoutianyou; END |
仍然出错
再次更改
|
delimiter // CREATE PROCEDURE proce1 () BEGIN DECLARE cur1 CURSOR FOR SELECT * FROM customers WHERE cust_id IS NULL ; END |
这次我们成功地声明游标
是不是因为我们修改了分隔符然我们成功地创建游标了呢?
我们再试试
|
CREATE PROCEDURE proce1() DECLARE cur1 CURSOR FOR SELECT * FROM customers WHERE cust_id IS NULL ; |
这样也是错误的,下面再试试不使用存储过程地语句能否成功创建游标
|
delimiter // DECLARE cur2 CURSOR FOR SELECT * FROM orders ; |
或者是这样
|
delimiter // DECLARE cur2 CURSOR FOR SELECT * FROM orders // |
这两种也8行
试了这么多次,唯一成功的只有下面这种语句
|
delimiter // CREATE PROCEDURE proce1() BEGIN DECLARE cur1 CURSOR FOR SELECT * FROM customers WHERE cust_id IS NULL ; END |
下面我们用游标来检索数据
很遗憾,MySQL中没有像Oracle中 %ROWTYPE 般的数据类型,我们下面试着使用游标来检索customers表中的某一类数据类型
触发器
触发器时特定的存储过程,在数据库发生特定活动时自动进行,一般来说,约束的处理比触发器更快,因此在可能的时候,应该尽可能地使用约束。
到此这篇关于MySQL中使用游标触发器的方法的文章就介绍到这了,更多相关mysql游标触发器内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
原文链接:https://blog.csdn.net/weixin_44634406/article/details/113717366
您可能感兴趣
- mysql中常用的三种存储引擎的区别(MySQL 存储过程的优缺点分析)
- mysql查看执行慢的sql(系统隐形杀手——阻塞与等待SQL)
- mysql建表时指定聚簇索引(一看就懂的MySQL的聚簇索引及聚簇索引是如何长高的)
- mysql查询逗号分割字符串(MySQL 字符串拆分实例无分隔符的字符串截取)
- mysql快速导入1亿数据(mysql批量新增和存储的方法实例)
- mysqlpxc性能(MySQL之PXC集群搭建的方法步骤)
- python连接到本地的mysql数据库(Python实现连接MySql数据库及增删改查操作详解)
- mysql改root密码命令(MySQL root密码的重置方法)
- mysql大表查询优化方案(mysql查询优化之100万条数据的一张表优化方案)
- mysqldecimal类型转换(mysql中decimal数据类型小数位填充问题详解)
- mysql字符串的表示方法(详解mysql中的字符集和校验规则)
- mysql中timestamp类型的CURRENT_TIMESTAMP 和ON UPDATE CURRENT_TIMESTAMP属性
- 升级mysql客户端版本(超详细教你怎么升级Mysql的版本)
- win10安装mysql8.0如何启动(win10下mysql 8.0.23 安装配置方法图文教程)
- 使用mysqldump命令来备份(linux使用mysqldump+expect+crontab实现mysql周期冷备份思路详解)
- mysql 索引表空间(MySQL如何构建数据表索引)
- 七夕取消了,牛郎织女没做核酸七夕已经取消(牛郎织女没做核酸七夕已经取消)
- 网友抵制 多地取消 夏日祭 为何惹众怒(网友抵制多地取消)
- 兄弟萌,今年的七夕又取消了 思考 思考(今年的七夕又取消了)
- 七夕取消是什么梗(七夕取消是什么梗)
- 这竟然是捏出来的 20种橡皮泥玩法让你轻松hold住魔娃(这竟然是捏出来的)
- 自制橡皮泥(自制橡皮泥)
热门推荐
- sql脚本编写计划任务(使用 SQL 语句实现一个年会抽奖程序的代码)
- js的遍历数组方法(JS中数组常用的循环遍历你会几种)
- mysql事务特性和隔离级别(Mysql事务特性和级别原理解析)
- 云服务器选择七个原则(如何选择一个好的云服务器?)
- HTML5 播放 RTSP 视频的实例代码(HTML5 播放 RTSP 视频的实例代码)
- dedecms中如何设置推荐文章(实现dedecms友情链接分栏目调用的方法图)
- docker的一些使用方法(使用Docker 安装 Jenkins的方法)
- laravel判断变量为空(Laravel模糊查询区分大小写的实例)
- mysql数据库死锁原理(MySQL数据库锁机制原理解析)
- canvas图片显示报错(html2canvas生成的图片偏移不完整的解决方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9