mysql——触发器——示例
数据准备:
create table employee ( num int(50),
d_id int(50),
name varchar(50),
age int(50),
sex varchar(50),
homeadd varchar(50)
); insert into employee values(1,1001,'zhangsan',26,'nan','beijing');
insert into employee values(2,1001,'lisi',24,'nv','hunan');
insert into employee values(3,1002,'wangwu',25,'nan','jiangsu');
insert into employee values(4,1004,'aric',15,'nan','yingguo'); select * from employee; create table department ( d_id int(50),
d_name varchar(50),
functione varchar(50),
address varchar(50)
); insert into department values(1001,'keyanbu','yanfachanpin','3lou5hao');
insert into department values(1002,'shengchanbu','shengchanchanp','5louyiceng');
insert into department values(1003,'xiaoshoubu','cehuaxiaoshou','1louxiaoshoudating'); select * from department;
select * from employee;

select * from department;

==========================================================================
create trigger 触发器名 before| after 触发事件
on 表名 for each row 执行语句; ---------------------------------------------------------------------------- delimiter &&
create trigger 触发器名 before| after 触发事件
on 表名 for each row
begin
执行语句列表
end
&&
delimiter; 触发事件是指触发条件,包括insert、update、delete; 表名指触发事件操作的表的名称;
创建一个表:
create table trigger_time ( exec_time varchar(50)
); select * from trigger_time; ----------select now();


=================================================
创建一个触发器:
create trigger dept_trig1 before insert on department for each row insert into trigger_time values ( now() );

===========================================
为了演示,先删除一条记录,再添加进去:
delete from department where d_id = 1003;

=========================================
添加刚才删除的记录:
insert into department values(1003,'xiaoshoubu','cehuaxiaoshou','1louxiaoshoudating');

===================================================================
在department表insert时,触发器会被触发,我们查看下:
select * from trigger_time;

===========================================================
==========================================================
示例02:
创建第二个演示示例用的时间表:
create table trigger_time1 ( exec_time varchar(50)
); select * from trigger_time1;

==================================================================
创建第二个触发器:
delimiter &&
create trigger dept_trig2 after delete on department for each row
begin
insert into trigger_time1 values ( now() );
insert into trigger_time values ( now() );
end
&&
delimi

================================================
执行删除语句:
delete from department where d_id = 1003;

==========================================
查看被删除记录的表以及2个时间表:
select * from department;
select * from trigger_time;
select * from trigger_time1;



=================================================================================================
查看触发器
1、查看数据库中所有触发器的信息:
show triggers;

========================================================================
2、在triggers表中查看触发器信息
mysql中所有触发器的定义都存在information_schema数据库下的triggers表中,查询triggers表,可以查询数据库中所有触发器的详细信息
select * from information_schema.triggers; /*查询所有*/
select * from information_schema.triggers where trigger_name = 'dept_trig1'; /*单个指定查询*/
注意:在激活触发器时,对触发器中的执行语句存在一些限制。而且触发器有问题,会阻止程序向下执行,而且数据不能回滚。
select * from information_schema.triggers; /*查询所有*/ select * from information_schema.triggers where trigger_name = 'dept_trig1'; select * from information_schema.triggers where trigger_name = 'dept_trig2';

==================================================
3、删除触发器
drop trigger 触发器名;
select * from information_schema.triggers; drop trigger dept_trig1; drop trigger dept_trig2;

mysql——触发器——示例的更多相关文章
- MySQL 触发器示例
简介: MySQL 触发器 这次实验是在一台 MySQL Slave 上进行的,事实证明:从库添加数据库.表.插入.删除数据等,不会导致主从失败. 一.创建实验数据库.表 mysql > cre ...
- mysql 触发器示例和注解
-- 格式 CREATE TRIGGER 触发器名称 AFTER|before insert|update|delete ON 触发表 FOR EACH ROW BEGIN insert into 处 ...
- Mysql触发器示例
begin ); ); ); then set x = (select ID from qn_huiyuan_grade g ); elseif r then set x = (select ID f ...
- 【mysql】mysql触发器使用示例
mysql触发器 时间点:before/after 触发事件: update/delete/insert 时间点+触发事件:构成一个完整的触发器的触发时机: 一个触发时机最多只能由1个Trigger: ...
- MySQL触发器使用详解
MySQL包含对触发器的支持.触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作事件触发表上的触发器的执行. 创建触发器在MySQL中,创建触发器语法如下: ...
- MySQL 触发器结构及三个案例demo
--你必须拥有相当大的权限才能创建触发器(CREATE TRIGGER),如果你已经是Root用户,那么就足够了.这跟SQL的标准有所不同. CREATE TRIGGER语法 CREATE TRIGG ...
- mysql 触发器 trigger用法 three (稍微复杂的)
MySQL包含对触发器的支持.触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作事件触发表上的触发器的执行. 创建触发器 在MySQL中,创建触发器语法如下 ...
- Day4 MySql触发器视图索引以及设计优化
触发器 MySQL包含对触发器的支持.触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作事件触发表上的触发器的执行. 通过事件触发,不能传参 语法 CREA ...
- 数据库-mysql触发器
MySQL包含对触发器的支持.触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作事件触发表上的触发器的执行. 一:创建触发器 在MySQL中,创建触发器语法 ...
随机推荐
- 自我介绍 & 友链
"Never say never until the very end." --Flere825 想了想其实没什么可介绍的--毕竟我这么菜也没多少人认识我qwq还是写一点吧. 某弱 ...
- let 命令
let命令取代并扩展了expr命令的整数算数符号. let除了支持5中基础的运算符. 还支持+=,-=,*=,.-,%= 自变运算符. 以及**幂次运算符. 在变量计算中不需要加上$来表示变量. [c ...
- .net中[Serializable]序列化的应用
原文链接:https://blog.csdn.net/wanlong360599336/article/details/9222459 浅析.NET中的Serialization 摘要 本文简要介绍了 ...
- vuex , 简单入(liao)门(jie)
vuex什么 ? 官方的说法就是 vuex是专门为vue.js应用程序开发的 状态管理模式 .并采用集中式存储 , 管理应用的所有组件的状态 ,并以相同的规则保证状态以一种可预估的方式发生变化. 自己 ...
- 数组翻转的方法(java实现)
数组翻转的方法(java实现),所谓数组翻转,就是将数组倒置,例如原数组为:{"a","b","c","d"},那么翻转 ...
- C语言 - 堆和栈
一.堆内存 1.就是程序员手动管理的一块内存,在C语言中,可以理解为用malloc.realloc等申请空间的一些函数,这些函数所申请的空间就是堆空间 2.C语言中,堆空间是申请和释放 malloc/ ...
- 51 Nod 最大子矩阵和
1051 最大子矩阵和 基准时间限制:2 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 关注 一个M*N的矩阵,找到此矩阵的一个子矩阵,并且这个子矩阵的元素的和是最大的 ...
- 论文阅读:Camdoop: Exploiting In-network Aggregation for Big Data Applications
摘要: 大公司与中小型企业每天都在批处理作业和实时应用程序中处理大量数据,这会产生大量的网络流量,而使用传统的的网络基础架构则很难支持.为了解决这个问题已经提出了几种新颖的网络拓扑,旨在增加企业集群中 ...
- [LOJ6433][PKUSC2018]最大前缀和:状压DP
分析 我们让每个数列在第一个取到最大前缀和的位置被统计到. 假设一个数列在\(pos\)处第一次取到最大前缀和,分析性质,有: 下标在\([1,pos]\)之间的数形成的数列的每个后缀和(不包括整个数 ...
- python学习之路(12)
迭代 如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration). 在Python中,迭代是通过for ... in来完成的,而 ...