MySQL(五)
游标
游标(cursor)是一个存储在MySQL服务器上的数据库查询,它不是一条SELECT语句,而是被该语句检索出来的结果集。
有时,需要在检索出来的行中前进或后退一行或多行。这就是使用游标的原因。
MySQL中游标只能用于存储过程。
声明游标
CREATE PROCEDURE 存储过程名()
BEGIN
DECLARE 游标名 CURSOR
FOR
SELECT 列名
FROM 表名
END;
打开游标和关闭游标
OPEN 游标名;
CLOSE 游标名;
-- 如果你不明确关闭游标,MySQL将会在到达END语句时自动关闭它。
使用游标数据
使用游标数据的前提是,已经打开了游标,然后使用FETCH语句逐行访问。
CREATE PROCEDURE processorders(oBEGIN
-- Declare local variablesDECLARE o INT;
-- Declare the cursor
DECLARE ordernumbers CURSORFOR
SELECT order_num FROM orders;
-- open the cursor
OPEN ordernumbers;
-- Get order number
FETCH ordernumbers INTO o ;
-- Close the cursor
CLOSE ordernumbers;
END;
待补
触发器
在某个表发生更改时自动处理,这确切地说就是触发器。
触发器值响应DELETE,UPDATE,INSERT这三种操作,可以选择在这三种操作之前或之后响应,也就是说每个表至多有六个触发器。
触发器名必须在每个表中唯一,而不是整个数据库。
只有表才支持触发器,视图不行。
创建触发器
CREATE TRIGGER 触发器名 BEFORE/AFTER
INSERT/UPDATE/DELETE ON 表名
[FOR EACH ROW] 响应动作
删除触发器
DROP TRIGGER 触发器名;
INSERT触发器:
在INSERT触发器内,可以引用一个名为NEW的的虚拟表访问被插入的行;
在BEFOREINSERT触发器中,NEW中的值可以被改变;
DELETE触发器:
在DELETE触发器内,可以引用一个名为OLD的虚拟表访问被删除的行;
OLD中的值不可更改。
UPDATE触发器:
在UPDATE触发器内,可以用OLD表访问更改前的值,使用NEW表访问更改后的值;
NEW中的值可以被改变;OLD中的值不可更改。
本文来自博客园,作者:klaus08,转载请注明原文链接:https://www.cnblogs.com/klaus08/p/15105009.html