数据库——触发器
来源:互联网 发布:sql 父子级联查询 编辑:程序博客网 时间:2024/05/29 12:10
1:定义
是一种特殊的存储过程。一般的存储过程是通过存储过程名直接调用,而触发器主要是通过事件(增、删、改)进行触发而被执行的。其在表中数据发生变化时自动强制执行。常见的触发器有两种:after(for)、instead of,用于insert、update、delete事件。
after(for) 表示执行代码后,执行触发器
instead of 表示执行代码前,用已经写好的触发器代替你的操作
2:语法
Create trigger triggerName After/before insert/delete/update on 表名 For each row //写死 Begin Sql语句;( insert/delete/update) end //After/before(代表触发的时间) //insert/delete/update(代表监视的事件) //表名(表名为监视的地点) //Sql语句;( insert/delete/update)为触发事件
如何在触发器引用行的值
对于insert而言,新增的行用new表示,行中的每一列用new.列表表示
对于delete而言,原本有一行,后被删除想引用被删除的这一行,用old表示
对于update而言,被修改的行,修改之前的数据用old来表示,修改之后的用new表示
删除触发器 Drop trigger triggername;
代码分析://创建两个表,orders订单表,product商品表mysql> select * from product; -> $(该符号表示结束符) //delimiter $ 告诉MySQL解释器,当碰到$时,才执行命令.mysql> select * from product; -> $+----+------+-----+| id | name | num |+----+------+-----+| 1 | 牛 | 57 || 2 | 羊 | 80 || 3 | 猪 | 80 |+----+------+-----+此时订单表数据为空往订单加入数据mysql> insert into orders(gid,much) values(2,10);insert into orders(gid,much) values(3,5); -> $Query OK, 1 row affectedQuery OK, 1 row affected(订单拿走羊10只,猪5个,所以最后在商品表里面样的数量由80变为70,猪的数量由80变为75)mysql> select * from product; -> $+----+------+-----+| id | name | num |+----+------+-----+| 1 | 牛 | 57 || 2 | 羊 | 70 || 3 | 猪 | 75 |+----+------+-----+3 rows in setmysql> select * from orders; -> $+-----+-----+------+| oid | gid | much |+-----+-----+------+| 4 | 2 | 10 || 5 | 3 | 5 |+-----+-----+------+2 rows in set建立触发器mysql> create trigger tg2 after delete on ordersfor each rowbegin update product set num=num+old.much where id=old.id;end$Query OK, 0 rows affected删除数据触动mysql> delete from orders where id=3; -> $Query OK, 1 row affectedmysql> select * from orders; -> $+-----+-----+------+| oid | gid | much |+-----+-----+------+| 4 | 2 | 10 |+-----+-----+------+1 row in set显示触发器的结果mysql> select * from product; -> $+----+------+-----+| id | name | num |+----+------+-----+| 1 | 牛 | 57 || 2 | 羊 | 70 || 3 | 猪 | 80 |+----+------+-----+3 rows in set
阅读全文
0 0
- 数据库——触发器
- 数据库——触发器
- 数据库原理——触发器
- SQLServer数据库——触发器
- 008 数据库对象—触发器—讲解
- 再看数据库——(3)触发器
- 数据库后台优化——触发器
- 数据库——(15)触发器
- 数据库——约束、断言、触发器
- 数据库对象——触发器、索引
- 数据库回顾(三)—触发器
- 触发器——————数据库(SQL)
- 菜鸟学数据库(二)——触发器
- 数据库学习之存储过程——触发器
- Oracle 数据库——创建序列和触发器命令
- 菜鸟学数据库(二)——触发器
- Oracle数据库——触发器的创建与应用
- 数据库之——索引、触发器、事务(存储引擎)
- 重建二叉树
- linux学习记录2---远程连接LINUX故障排查
- c++学习点滴
- Node.js 来构建前端的环境
- oracle 循环insert
- 数据库——触发器
- Java中的main()方法详解
- hbase shell之常用过滤器设置
- Flip Game 深搜
- Tomcat logs 目录下各日志文件的含义
- swift中的手势
- css应用表格排版td中的文本过长,设置不换行,随内容同行显示样式
- 红黑树及其操作
- C_线性表(ADT)-顺序表的表示和实现