MySQL入门很简单-触发器
1、触发器是由事件来触发某个操作,这些事件包括insert语句、update语句和delete语句。当数据库系统执行这些事件时,会激活触发器执行相应操作。MySQL从5.0.2开始支持触发器。使用触发器可以保证某些操作之间的一致性。
2、创建一个执行语句的触发器
create trigger 触发器名 before|after 触发事件 on 表名 for each row 执行语句;
before和after参数指定触发器执行的时间;
触发事件包括insert、update和delete;
for each row表示任何一条记录上的操作满足触发条件都会触发触发器;
执行语句指触发器被触发后执行的程序
create trigger dept_trig1 before insert on department for each row insert into trigger_time values(now());
3、创建多个执行语句的触发器
create trigger 触发器名 before|after 触发事件 on 表名 for each row begin 执行语句列表 end;
一般情况下,MySQL默认以';'结束执行语句。在创建触发器过程中需要用到该符号。在执行语句列表也用';'分隔执行语句,因此可以用delimiter语句。
delimiter &&
create trigger dept_trig2 after delete
on department for each row
begin
insert into trigger_time values('21:01:01');
insert into trigger_time values('22:01:01');
end
&&
delimiter;
MySQL中,一个表在相同触发时间的相同触发事件只能创建一个触发器。如触发事件insert,触发时间为after的触发器只有一个。
4、查看触发器
指查看数据库中已存在的触发器的定义、状态和语法等信息。查看方法包括show triggers语句和查询information_schema数据库下的triggers表等。
show triggers \G //查看所有的触发器,不适合触发器很多的情况
select * from information_schema.triggers;
select * from information_schema.triggers where trigger_name='触发器名';
5、MySQL中,触发器执行的顺序是before触发器、表操作(insert、update和delete)和after触发器
create trigger before_insert before insert on department for each row insert into trigger_test values(null, "before_insert");
create trigger after_insert before insert on department for each row insert into trigger_test values(null, "after_insert");
激活触发器时,对触发器的执行语句存在一些限制。如,触发器中不能包含start transaction、commit或rollback等关键词也不能包含call语句。
在触发器执行过程中,任何步骤出错都会阻止程序向下执行,对于普通表来说,已经更新过的记录不能回滚,更新后的数据将继续保留在表中。
6、删除触发器
drop trigger 触发器名。
触发器名参数如果指指定名称会在当前数据库下查找该触发器,如果找到就删除。如果指定数据库,数据库系统会到指定的数据库下去查找触发器。
如果不再需要某触发器,一定要将该触发器删除。
MySQL入门很简单-触发器的更多相关文章
- 《Mysql 入门很简单》(读后感①)
下载完整版<Mysql 入门很简单>,点击这里~: http://files.cnblogs.com/files/zhengyeye/MySQL%E5%85%A5%E9%97%A8%E5% ...
- MySQL入门很简单: 7 触发器
触发器是由事件来触发某个操作,这些事件包括INSERT语句,UPDATE语句和DELETE语句 1.创建触发器 1)创建只有一个执行语句的触发器 例子:再向department表中执行INSERT操作 ...
- MySQL入门很简单: 1 数据库概述
1. 数据库概述 1.1 数据存储方式: 1)人工管理阶段 2)文件系统阶段: 文件系统通过文件的存储路径和文件名称访问文件中的数据 3)数据库系统阶段:Oracle, SQL Server, MyS ...
- MySQL入门很简单: 15 java访问MySQL数据库
1. 连接数据库 1.1 下载安装驱动 java通过JDBC(Java Database Connectivity,Java数据库连接)来访问MySQL数据库.JDBC的编程接口提供的接口和类与MyS ...
- MySQL入门很简单: 14MySQL日志
二进制日志: 以二进制文件的形式记录了数据库中的操作,但不记录查询语句 错误日志: 记录MySQL服务器的启动,关闭和运行错误等信息 通用查询日志: 记录用户登录和记录查询的信息 慢查询日志: 记录执 ...
- MySQL入门很简单: 13 数据备份和还原
1. 数据备份 1)使用mysqldump命令备份 第一种:备份一个数据库 mysqldump -u username -p dbname table1 table2 ... > BackupN ...
- MySQL入门很简单: 12 MYSQL 用户管理
1. 权限表 安装MySQL会自动安装一个名为mysql的数据库,存储权限表: user表, db表,host表,table_priv表,columns_priv表,proc_priv表等. 1)us ...
- MySQL入门很简单: 8查询数据
1. 查询语句语法 SELECT 属性列表 FROM 表名和视图列表 [WHERE 条件表达式1] [GROUP BY 属性名1 [HAVING t条件表达式2]] [ORDER BY 属性名2 [A ...
- MySQL入门很简单: 6 视图
1. 视图含义作用 视图是虚拟的表,是从数据率中一个或多个表中导出来的表: 数据库中只存放了视图的定义,没有存放视图中的数据,数据在原先的表中: 一旦表中的数据发生变化,显示在视图中的数据也会发生 ...
随机推荐
- 双重保险——前端bootstrapValidator验证+后台MVC模型验证
我们在前端使用BoostrapValidator插件验证最基本的格式要求问题,同时在后台中,使用MVC特有的模型验证来做双重保险.对于boostrapValidator我就不说了,具体请看<bo ...
- json信息的后台到前台的传输
公共方法: /** * 实际返回的是 response.setContentType("text/html;charset=utf-8"); * * @param o */ pub ...
- Wannafly Winter Camp 2019.Day 8 div1 I.岸边露伴的人生经验(FWT)
题目链接 \(Description\) 给定\(n\)个十维向量\(\overrightarrow{V_i}=x_1,x_2,...,x_{10}\).定义\(\overrightarrow{V}= ...
- php回话控制 cookie
<?php class CustomCookie{ static private $_instance = null; private function __construct(array $o ...
- IntelliJ IDEA无法更新maven索引
maven索引的作用时在添加dependency的时候能有自动提示,不影响dependency的下载: 解决办法: 1.http://ju.outofmemory.cn/entry/359450 2. ...
- mongodb 索引,全文索引与唯一索引
唯一索引创建: db.createIndex({name: 1}, {unique: true})
- MQ基本概念
MQ的基本概念 1) 队列管理器 队列管理器是MQ系统中最上层的一个概念,由它为我们提供基于队列的消息服务. 2) 消息 在MQ中,我们把应用程序交由MQ传输的数据定义为消息,我们可以定义消息的内容并 ...
- 类对象序列化为json串,json串反序列化为类对象
1.类对象序列化为json串: 方法一: class P(object): def __init__(self,name,age,sex): self.name=name self.age=age s ...
- Linux命令第一篇
作业一: 1) 新建用户natasha,uid为1000,gid为555,备注信息为“master” natasha:x:1004:555:master:/home/natasha:/bin/ba ...
- python中@classmethod @staticmethod区别(转)
pthon中3种方式定义类方法, 常规方式, @classmethod修饰方式, @staticmethod修饰方式. class A(object): def foo(self, x): print ...