`
sogotobj
  • 浏览: 617770 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

MySQL笔记(MYSQL触发器)

 
阅读更多

当执行delete、update或insert操作时,可以使用触发器来触发某些操作。

创建触发器:

CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name

FOR EACH ROW trigger_stmt

其中 trigger_name是触发器名,

trigger_time:BEFORE,AFTER

trigger_event:INSERT、UPDATE、DELETE

tbl_name:关联的表名

注意,INSERT除了插入操作,load data也能激活该事件。对于同一trigger_event,不能有两个相同trigger_time的触发器。

trigger_stmt:触发器被激活时执行的语句,可以使用单条语句,也可以使用BEGIN——END这样的复合语句。

例如:

mysql> CREATE TABLE account (acct_num INT, amount DECIMAL(10,2));

mysql> CREATE TRIGGER ins_sum BEFORE INSERT ON account

-> FOR EACH ROW SET @sum = @sum + NEW.amount;

mysql> SET @sum = 0;

mysql> INSERT INTO account values(5,12.5);

mysql> SELECT @num;

在该例子中,关键字NEW.col_name在INSERT触发程序中引用;

另外一个关键字OLD.col_name可用于DELETE中

NEW和OLD均可用于UPDATE触发程序中。

old命令的列为只读的,new命名的列,如果具有select权限,可引用它,如果在before出发程序中,具有update权限,可使用set new.col_name = value的方法,在插入前更改值

另一个例子:

mysql> delimiter //

mysql> CREATE TRIGGER upd_check BEFORE UPDATE ON account

-> FOR EACH ROW

-> BEGIN

-> IF NEW.amount < 0 THEN

-> SET NEW.amount = 0;

-> ELSEIF NEW.amount > 100 THEN

-> SET NEW.amount = 100;

-> END IF;

-> END;//

mysql> delimiter ;

当然,这里可以先定义存储程序,然后在触发器内call存储程序,这样就可以对存储程序进行复用。

删除触发器:

DROP TROGGER trigger_name

--------------------------------------------------------------------------

需要注意以下几点:

1.MySQL触发器针对行来操作,因此当处理大数据集的时候可能效率很低。

2.触发器不能保证原子性,例如在MYISAM中,当一个更新触发器在更新一个表后,触发对另外一个表的更新,若触发器失败,不会回滚第一个表的更新。InnoDB中的

触发器和操作则是在一个事务中完成,是原子操作。

分享到:
评论

相关推荐

    非常详细的某培训机构mysql学习笔记

    MySQL触发器 MySQL存储过程与函数 MySQL3 MySQL安全机制 MySQL日志管理 MySQL数据备份 备份概述 mysqldump [逻辑] mydumper [逻辑] into outfile [逻辑] xtrabackup [物理] snapshot [物理] tar打包...

    mysql基础笔记

    mysql 学习基础笔记 .Mysql 基础操作 1.1 mysql表复制 1.2 mysql索引 1.3 mysql试图 1.4 mysql 内置函数 1.4.1 字符串函数 1.4.2 数学函数 ... 1.8 mysql触发器(trigger) 1.9 重排auto_increment值

    mysql学习笔记和案例(完全版)2019_10_16.zip

    这是我学习mysql数据库的时候做的学习笔记,增删查改,视图,自定义函数,自定义存储过程,触发器,索引,sql编程等等。

    mysql相关笔记(基础+存储过程+触发器等)

    详细的mysql笔记,各种查询整理,触发器整理,存储过程整理,里面还有结合着数据库设计的小案例,非常实用!

    MySQL学习笔记(含基础、运维、进阶三部分)

    MySQL学习笔记(含基础、运维、进阶三部分) MySQL学习笔记(含基础、运维、进阶三部分) MySQL学习笔记(含基础、运维、进阶三部分) 包含了我学习 MySQL 过程中的笔记和资源,从入门到进阶的内容都有涉及。通过...

    MySQL笔记之触发器的应用

    触发器是由事件来触发某个操作,这些事件包括INSERT语句,UPDATE语句和DELETE语句

    MySQL学习笔记、学习文档

    MySQL入Ar ]很简单学习笔记李国华.dox Oracle查看表结构.txt SQL作业代理禁用.txt sql.txt SQL-Transaction事物一起执行.txt sq和oracle的区别.txt sysobjects中type字段值意思txt W3School例句.txt 按照中文首字母...

    MySQL5.7学习笔记 完整版PDF

    《MySQL5.7学习笔记》将从MySQL5.7的安装、配置、使用等方面进行详细介绍,帮助读者快速掌握MySQL5.7的使用技巧。首先,我们将介绍MySQL5.7的安装方法,包括Windows和Linux平台的安装步骤。然后,我们将讲解MySQL5.7...

    MySQL数据库入门到高级笔记快速学习pdf版本

    内容概要:这是博主自己写的三篇MySQL文章的综合pdf版本,干货满满,同时搭配脑图提高效率,从基础知识,比如对数据库的操作,对数据表的增删改,查单独写了一篇文章从单表到多表,子查询等等,干货满满,最后就是...

    mysql笔记.txt

    最近整理的笔记 SQL执行计划 explain select customer_id,title,content from product_comment where audit_status=1 and product_id=199 limit 0,5; 查询计划的限制 无法展示存储过程,触发器,UDF对查询的...

    mysql5 培训 PPT beta1

    从数据库原理的讲解,到MySQL的安装、配置、标准SQL的DML、DDL、DCL、高级查询、数据库设计、表约束、PowerDesigner12.5的使用、三大范式、索引、视图、存储过程和函数、触发器,MySQL权限原理及管理、数据的备份与...

    mysql 学习笔记 绝对原创 包含工作中常用的语句 存储过程 函数 触发器等

    个人原创,根据自己的工作总结的,对工作的人事来说帮助很大。。里面包含 mysql的基本知识 还有优化 部分 存储过程 等 里面的语句都完全正确,全部在数据库中验证过

    mysql数据库DB性能与优化笔记

    资源包括:mysql视图应用,mysql存储过程,mysql使用游标,mysql使用触发器,mysql事务管理处理,mysql访问控制,mysql数据优化及备份&索引。

    mysql高级.pdf

    mysql笔记分享,存储函数、触发器,索引、存储引擎,sql优化。所有均为纯手写,有问题请提出,谢谢!

    数据库开发 - MySQL实战技巧 - 学习笔记与优化案例 - 求职与技能提升

    内容包括从基本的数据库设计理论到高效的查询优化技巧,涵盖了索引使用、存储过程、触发器以及数据安全等关键主题。此外,资源中还包括作者在学习过程中编写的笔记以及实际优化项目的案例分析,旨在为读者提供从理论...

    MySQL学习笔记

    对于MySQL学习时的简要记录,包含了MySQL学习基础知识(数据类型、触发器、储存过程等),进阶的优化管理等操作

    MySQL零基础小白学习及面试学习笔记.rar

    MySQL零基础小白学习及面试学习笔记是个人在学习过程中整理和梳理的笔记。 其中包含邮件备份demo案例。 基础知识点笔记涵盖:安装、基础原理、存储引擎、索引事务锁、触发器等等面试相关使用到的知识点 实战专栏包含...

    MySQL必知必会笔记

    MySQL必知必会》MySQL是世界上最受欢迎的数据库管理系统之一。书中从介绍简单的数据检索开始,逐步深入一些复杂的内容,包括联结的使用、子查询、正则表达式和基于全文本的搜索、存储过程、游标、触发器、表约束,...

    MySQL高级学习笔记(三):Mysql逻辑架构介绍、mysql存储引擎详解

    Mysql逻辑架构介绍总体概览 和其它数据库相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构...sql interface:存储过程、视图触发器 parser:查询事物、对象的权限

Global site tag (gtag.js) - Google Analytics