《MySQL必知必会》——游标、触发器

游标

游标cursor是一个存储在MySQL服务器上的数据库查询。
它不是一条SELECT语句,而是被该语句检索出来的结果集,在存储了游标之后,应用程序可以根据需要滚动或浏览其中的数据。

MySQL游标只能用于存储过程(函数)。
使用游标的步骤:

  • 在使用游标之前,必须先声明它。

  • 声明之后,必须打开游标以供使用

  • 对于填有数据的游标,根据需要取出各行

  • 在结束游标使用时,必须关闭游标

    CREATE PROCEDURE processorders()
    BEGIN
         DECLARE order numbers CURSOR
         FOR
         SELECT order_num FROM orders;
    END;     
    

存储过程处理完成后,游标就消失。因为它局限于存储过程。

打开游标:OPEN order_numbers;
关闭游标:CLOSE order_numbers;

CLOSE释放游标使用的所有内部内存和资源,因此在每个游标不再需要时都应关闭。

使用声明过的游标不需要再次声明,用OPEN语句打开就可以了。

在一个游标被打开后,可以使用FETCH语句分别访问它的每一行,FETCH指定检索什么数据。

CREATE PROCEDURE processorder()
BEGIN
     DECLARE 0 INT;
     DECLARE ordernumber CURSOR
     FOR
     SELECT order_num FROM orders;
     OPEN ordernumbers;
     FETCH  ordernumbers INTO 0;
     CLOSE ordernumbers;
 END;    

FETCH自动从第一行开始检索当前行的order_num列到一个名为0的局部变量中。

FETCH语句支持循环语句,它可用来重复执行代码,直到使哟个LEAVE语句子句手动退出为止。

触发器

当需要在某个表发生更改时自动执行的MySQL语句。

只有表才支持触发器,视图不支持,临时表也不支持。

触发器按每个表每个事件每次地定义,每个表每个事件每次只允许一个触发器,因此,每个表最多支持6个触发器。单一触发器不能与多个事件或多个表关联。

CREATE TRIGGER newproduct 
AFTER INSERT ON products 
FOR EACH ROW SELECT ‘product added’;

这里创建了一个newproduct的触发器,触发器可在一个操作发生之前或之后执行,这个触发器哈指定FOR EACH ROW,因此代码对每个插入行执行显示一次‘product added’.

删除触发器:DROP TRIGGER newproducts;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值