MySQL笔记五
来源:互联网 发布:国产网络腐剧 编辑:程序博客网 时间:2024/05/22 06:15
触发器
触发器主要用于监视某个表的insert、update以及delete等更新操作,这些操作可以分别激活该表的insert、update或者delete类型的触发程序运行,从而实现数据的自动维护。
一、创建一个触发器
使用create trigger语句可以创建一个触发器
语法格式如下。
create trigger 触发器名 触发时间 触发事件
on 表名
for each row
begin
触发程序
end
·MySQL的触发事件有三种:
insert:将新记录插入表时激活触发程序update:更改某一行记录时激活触发程序delete:从表中删除某一行记录时激活触发程序
·触发器的触发时间有两种:
before表示在触发事件发生之前执行触发程序。
after表示在触发事件发生之后执行触发器。
因此,由触发器的时间和触发器的事件可以看出一个数据库表最多可以设置六种类型的触发器。
现将两张表建立好,一张student表、一张people表,在student表中增加一条李四的信息,通过触发器在people表中也增加了一条信息
//创建只有一个执行语句的触发器触发器
create trigger stu_in after insert
on student
for each row
insert into people (name,age) values (‘李四’,13);
insert into student (stuname,stuage) values (‘李四’,23);
//删除触发器,触发器只有一条执行语句
DROP TRIGGER stu_in ;
·触发程序中可以使用old关键字与new关键字:
当向表插入新记录时,在触发程序中可以使用new关键字表示新记录,当需要访问新记录的某个字段值时,可以使用“new.字段名”的方式访问。当从表中删除某条旧记录时,在触发程序中可以使用old关键字表示旧记录,当需要访问旧记录的某个字段值时,可以使用“old.字段名”的方式访问。 当修改表的某条记录时,在触发程序中可以使用old关键字表示修改前的旧记录、使用new关键字表示修改后的新记录。当需要访问旧记录的某个字段值时,可以使用“old.字段名”的方式访问。当需要访问修改后的新记录的某个字段值时,可以使用“new.字段名”的方式访问。
1、使用new关键字
create trigger stu_in2 after insert
on student
for each row
insert into people (name,age) values (new.stuname,new.stuage);
insert into student (stuname,stuage) values (‘李四’,23);
//创建有多个执行语句的触发器。这时候多条语句要用begin end 包起来。组成语句块。
//在student表上建立insert触发器,当在student表中插入一条数据时,通过触发器在people表中插入一条数据,并将people表中id=1的信息删除掉。
delimiter &&
create trigger stu_in3 after insert
on student
for each row
begin
insert into people (name,age) values (new.stuname,new.stuage);
delete from people where id=1;
end
&&
delimiter ;
insert into student (stuname,stuage) values (‘李四’,23);
使用下面方法查看触发器的定义。
1、SHOW TRIGGERS;
2、查询information_schema数据库中的triggers表,可以查看触发器的定义
删除触发器
DROP TRIGGER stu_in3;
- mysql笔记 五 触发器
- Mysql学习笔记五
- mysql阅读笔记五
- MySQL学习笔记五
- MySQL笔记五
- MySQL学习笔记(五)
- Mysql学习笔记五,索引
- MySQL学习笔记五:数据类型
- MySQL学习笔记(五)
- mysql学习笔记五----存储过程
- MySQL学习笔记(五)数据备份
- Head First PHP&MySQL学习笔记(五)
- 学习Linux笔记(五)-Mysql应用
- mysql学习笔记之五(触发器)
- MySQL基础笔记(五) 视图
- 一千行MySQL学习笔记(五)
- Mysql自学笔记五(存储过程)
- mysql学习笔记五(常用函数)
- 蓝牙电路
- 剑指offer-和为s的两个数字VS和为s的连续正数序列
- JVM监控与调优
- http的长连接和短连接
- Qt 画布(基于QImage 以及 QPainterPath)
- MySQL笔记五
- 25个经典的Spring面试问答
- jquery使用积累
- LeetCode_001 求两个数的和
- 总结Android Socket开发中可能遇到的问题
- ac自动机讲解
- 一个简单的Makefile
- C++类 内存对齐和类大小理解
- 兼容CommonJS