文档章节

mysql触发器

notAcoder
 notAcoder
发布于 2013/09/28 02:08
字数 480
阅读 56
收藏 0
1. 触发器的使用
create table customerHistory like customer;
alter table customerHistory add updated DATETIME; 
desc customerHistory;
创建一个名为trg_customer_history的触发器,在删除customer表中的数据时触发
create trigger trg_customer_history after delete on customer for each row
begin 
insert into customerHistory (mid,nam,birth,sex,updated) values(old.mid,old.nam,old.birth,old.sex,NOW());
end

select * from customer;
INSERT into customer values('A0001','小王','1990-1-2',0);
delete from customer where customer.mid = 'A0001';
select * from customerHistory;

查询创建的触发器
show triggers;

可以使用的关键词与事件的关系

inster
NEW
update
OLD 和 NEW
delete
OLD

2.游标

在创建存储过程,存储函数,以及触发器时,我们还必须掌握一种成为游标的功能。游标就是对select语句取得的结果进行一件一件的处理的功能。
使用游标时,先将select 语句检索出的记录集合临时保存到内存中,然后游标对这些保存在内存中的记录集合按顺序取出进行处理。
另外,在使用游标前需要理解指针这个概念。指针是确定当前记录的信息,可以理解为内存中保存记录的“地址”,在游标处理中,通过移动指针来进行逐行的数据处理。

例子1:
create procedure sp_cursor(out result text)
BEGIN
declare flag bit default 0;
declare tmp VARCHAR(20);
-- 申明游标
declare cur cursor for select distinct depart from employee;
-- 定义取出游标中所有记录时的处理
declare continue handler for not FOUND set flag = 1 ;
-- 打开游标
open cur;
while flag != 1 do
fetch cur into tmp;
if flag != 1 then 
set result = CONCAT_WS(",",result,tmp);-- 将多个字符串用","隔开
end if;
end while;
-- 关闭游标
CLOSE cur;
end

call sp_cursor(@r);
select @r ;

申明游标
declare 游标名 cursor for select 语句;

打开游标
open 游标名;
从指针中取得记录数据
fetch 游标名 into 变量名,...;

3. 数据导入导出
select * into outfile 'd:/out.csv' fields terminated by ',' from customer;
load data infile 'd:/out.csv' into table customer fields terminated by ',';

© 著作权归作者所有

下一篇: mysql procedure
notAcoder
粉丝 5
博文 30
码字总数 12671
作品 0
巴南
架构师
私信 提问
MySQL的触发器

触发器—trigeer是数据库下用于监视数据改变的某种情况,并触发执行某种操作的一个功能,简单来说就是对某一张表符合某种条件的更改前或者后执行一段存储过程。在这里就简单的说一说在MySQL...

往事_Jim_遗
2018/01/08
0
0
mysql-之触发器_已迁移

mysql 触发器 当发生某个事件(增删更查)时可以执行定义的sql语句 ===============总结 无情的分隔线 总结======================== 一、触发器作用 MySQL包含对触发器的支持。触发器是一种与...

鬼谷子灬
2016/06/29
23
0
记一次由mysql触发器引发的故障

上周六到公司上班,刚坐下没多久,公司业务传过消息说,用户borrow表信息无法更新。查看网站报错如下: 报错信息表示是由于mysql的函数和触发器引起的,问了下公司开发,他们表示函数功能已经...

Tyrant0532
2018/10/29
0
0
自动生成mysql触发器代码,实现数据同步

自动生成mysql触发器代码,实现数据同步 如果公司里有上百个表要做触发器,如果手动写代码的话。很累,所以今天写了一个小程序,自动生成mysql的触发代码。 $dbname = 'test';//数据库 $tab1 ...

刘赤龙
2010/06/08
224
0
Ubuntu下安装MysqlWorkBench

1、先下载workBench https://dev.mysql.com/downloads/file/?id=455790 2、先执行命令: sudo dpkg -i mysql-workbench-community-6.2.5-1ubu1404-amd64.deb 安装 安装的时候报错: liang@li......

winter199
2017/11/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

面向海量数据的极致成本优化-云HBase的一体化冷热分离

前言 随着业务的持续发展,业务数据库存储量会持续增长。通常数据量过亿时,就需要考虑做分库分表,或者选择扩展能力更好的NOSQL/NewSQL数据库,如HBase就可以单表支持PB级数据,足够满足大多...

阿里云官方博客
35分钟前
4
0
最新最全国内外架构开源技术干货资料

大家好,废话不多说,整理了精心收集了各类资源。 声明,如侵犯个人利益,请联系小编,会立即删除相关资料。 领取方式在文末 求转发列表 好了,由于资源太多啦,就不一一列举了。 大家按照下...

泥瓦匠BYSocket
37分钟前
6
0
springmvc jsp访问不了css

在jsp中引入css,一直报404错误,直接访问css,也无法访问 将css文件移出WEB-INF,因为处于安全性考虑,这个目录禁止外部访问。 当引用css时,可以直接用绝对路径${pageContext.request.conte...

沉迷于编程的小菜菜
40分钟前
4
0
android 系统版本 9.1网络请求遇到坑

网络请求异常: E/http: CLEARTEXT communication to plat.xunlinkeji.cn not permitted by network security policy 在res下新建一个xml目录 创建名为network_security_config.xml 文件 ,该......

MrLins
57分钟前
5
0
Istio 1.3 发布,HTTP 遥测不再需要 Mixer

> 原文链接:Istio 1.3 发布,HTTP 遥测不再需要 Mixer Istio 是 Google、IBM 和 Lyft 联合开源的服务网格(Service Mesh)框架,旨在解决大量微服务的发现、连接、管理、监控以及安全等问题...

米开朗基杨
今天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部