学习Mysql day04
来源:互联网 发布:建筑技术变革 知乎 编辑:程序博客网 时间:2024/06/15 15:42
1.触发器
触发器是数据库系统中的一种机制,可以根据某一张表的增、删、改操作时作出一些特定的功能处理。
触发器创建在表的基础上,类型有三种,增、删、改,也就是说,一个表最多只能创建三个触发器。
同时,触发器是可以联动的。比如说销售记录插入一条销售信息,则销售记录表的insert触发器触发,针对商品表的库存进行修改。如果商品表创建了update触发器,则商品表的update触发器也会紧跟着触发。
语法 :create trigger t_xiaoshou after insert/update/delete on 表名
for each row
begin
//业务处理
//业务处理
end;
在触发中new表示新添加的数据行 old 表示删除的数据行。
Insert 时只有new 数据行
Delete时只有 old 数据行
Update时 两个数据行都有,更改数据时,先把这一行数据删除,数据行存在old里面,然后再插入修改后的数据行,则插入的数据行保存在new 里面。
案例一:insert触发器
/*在销售表中添加insert触发器,触发时修改商品表的库存*/
DELIMITER$$
createtrigger t_orderList AFTER insert on orderList
for each row
begin
/*取商品编号 及 数量 然后根据商品编号把商品表的库存减少,减少数量*/
update goods set kuchun = kuchun-new.numwhere goods.id = new.gid;
end$$;
案例二:delete触发器
DELIMITER$$
createtrigger t_student AFTER delete on student
for each row
begin
/*取删除的学员信息,插入到毕业学员信息表中 old行保存的是删除的学员信息*/
insert into biyeiStudentvalues(old.studentno,old.name,old.sex,old.phone,old.birthday,
old.address,old.email);
end$$;
案例三:update 触发器 当更改了库存后,触发,重新计算商品的总价值。
delimiter $$
createtrigger t_goods before update on goods
for each row
begin
/*判断是哪一列进行了修改*/
if old.kuchun != new.kuchun then
/*因为是同一个表,所以只要设置新行里面值就可以。*/
set new.totalPrice =new.kuchun*new.inPrice;
end if;
end;
$$;2.存储过程
存储过程类似于Java中的方法,把一些复杂的业务进行封装,并进行了预编译,以后可以调用过程名,就可以执行过程中的业务代码,就像Java中的方法调用。过程可以给参数。
优点:速度快、安全、减少网络流量
练习:
5添加存储过程
传入参数调用存储过程
查传出来的参数
- mysql 学习笔记 day04
- 学习Mysql day04
- MySQL学习笔记 -- day04 多表查询
- C++学习日记day04
- C++ 学习笔记 day04
- java学习day04
- java学习day04
- [Android开发学习] day04
- swift学习Day04
- 重新学习c++ day04
- CSS学习、Day04
- linux学习-day04
- Oracle学习-day04
- 基础学习day04
- Oracle学习笔记--day04
- Git 学习 day04
- struts2 day04学习笔记
- day04 -----深入浅出mysql-----javaio复习
- codeforces contest 779 C题
- 代码注释:机器学习实战第4章 基于概率论的分类方法:朴素贝叶斯
- 原生js封装ajax函数
- Android 学会写注解框架
- 腾讯2017暑假实习生招聘笔试编程题(2)
- 学习Mysql day04
- Retrofit/OkHttp API接口加固技术实践(下)
- SOJ 1033
- Java的概述
- k-Nearest Neighbor 算法详解
- L2-015. 互评成绩
- postgresql 9.3 自定义聚合函数实现多行数据合并成一列
- 计算机视觉、机器学习相关领域论文和源代码大集合
- 案例——装备选择