MySQL中使用游标触发器的方法

 更新时间:2021年02月08日 10:02:46   作者:吃西瓜的小螃蟹  
这篇文章主要介绍了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游标触发器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL彻底卸载并且重新安装教程

    MySQL彻底卸载并且重新安装教程

    本文详细介绍了卸载和重新安装MySQL的步骤,包括停止MySQL服务、卸载软件、清理残余文件、删除注册表、删除环境变量配置等,重新安装时,需要下载MySQL、配置环境变量、新建配置文件、初始化MySQL服务、注册MySQL服务、启动MySQL服务、修改默认账户密码以及登录MySQL
    2025-01-01
  • MySQL数据库存储引擎的应用

    MySQL数据库存储引擎的应用

    存储引擎是MySQL将数据存储在文件系统中的存储方式,本文主要介绍了MySQL数据库的存储引擎的应用,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • MySQL获得当前日期时间函数示例详解

    MySQL获得当前日期时间函数示例详解

    这篇文章主要给大家介绍了关于MySQL获得当前日期时间函数的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Navicat工具中设置MySQL允许外部访问

    Navicat工具中设置MySQL允许外部访问

    默认情况下MySQL只允许本地登录,即只能在安装MySQL环境所在的主机下访问,这篇文章主要给大家介绍了关于Navicat工具中设置MySQL允许外部访问的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-04-04
  • MySQL删除表三种操作及delete、truncate、drop语句的区别

    MySQL删除表三种操作及delete、truncate、drop语句的区别

    文章主要介绍了MySQL中三种删除表的操作:delete语句、truncate语句和drop语句,它们的区别在于功能、用法、执行速度、使用场景、表和索引所占空间以及是否可回滚等方面,感兴趣的朋友跟随小编一起看看吧
    2025-03-03
  • MySQL中的间隙锁代码示例讲解

    MySQL中的间隙锁代码示例讲解

    锁是mysql提供的一种保证不同事务读写隔离的重要措施,通过锁机制可以有效提升决多线程下并发处理事务能力,不同的锁划分对应着不同的使用场景,本文来深入探讨一下mysql的另一种容易被忽视的锁,即间隙锁,以及与之相关的相关问题,需要的朋友可以参考下
    2023-08-08
  • mysql 5.6.24 安装配置方法图文教程

    mysql 5.6.24 安装配置方法图文教程

    这篇文章主要为大家分享了mysql 5.7.14安装配置方法图文教程,感兴趣的朋友可以参考一下
    2016-08-08
  • 在Windows环境下安装MySQL 的教程图解

    在Windows环境下安装MySQL 的教程图解

    这篇文章主要介绍了在Windows环境下安装MySQL 的教程图解,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07
  • navicat连接Mysql数据库报2013错误解决办法

    navicat连接Mysql数据库报2013错误解决办法

    这篇文章主要介绍了navicat连接Mysql数据库报2013错误的解决办法,首先检查MySQL是否安装成功,然后修改配置文件,添加或注释掉特定行,最后连接进入MySQL服务并执行授权命令,需要的朋友可以参考下
    2025-02-02
  • 浅谈Mysql insert on duplicate key 死锁问题定位与解决

    浅谈Mysql insert on duplicate key 死锁问

    本文介绍了在并发场景下的 insert on duplicate key update sql 出现的死锁,经过分析发现这种sql确实比较容易造成死锁,这篇文章就从分析死锁展开,到最终如何解决这样的问题 分享相应的思路,感兴趣的可以了解一下
    2022-05-05

最新评论