Mysql中的触发器定义与使用

目录
  • 一、触发器的介绍
  • 二、触发器的语法
    • (1)insert触发器
    • (2)update触发器
    • (3)delete触发器

一、触发器的介绍

触发器是与表有关的数据库对象,指在insert/update/delete 之前或之后,触发并执行

触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的

完整性,日志记录,数据校验等操作。

使用别名old和new来引用触发器中发生变化的记录内容,这与其它的数据库是相似的。

现在触发器还只支持行级触发,不支持语句级触发。

触发器类型                   new和old
 insert型触发器        new表示将要挥着已经新增的数据
 update型触发器        old表示修改之前的数据,new表示将要或者已经修改后的数据
 delete型触发器        old表示将要或者已经删除的数据

二、触发器的语法

语法:
   1:创建触发器语句
   create trigger 触发器名称 before/after  insert/update/delete on 表名 for each row
    begin
      sql语句
    end;
   这里的after和before表示的是增删改之后还是之前触发的
   2:查看触发器语句
     show triggers;
   3:删除触发器
     drop trigger 数据库名.触发器的名字;(如果没有指定数据库的名字,那么默认是当前数据库)

(1)insert触发器

create table user_logs(
    opera_text varchar(1000) comment '插入的·内容',
    opera_time datetime comment '插入的时间',
    opera varchar(20) comment '操作的类型,insert/delete/update'
 );
create trigger tb_user_insert_tigger
    after insert on sp for each row
    begin
        insert into user_logs(opera_text, opera_time, opera)
        values(concat('插入的名字=',new.name,',插入的年龄=',new.age),now(),'insert');
    end;
show triggers;
insert into sp(age, name) values (100,'大魔王');

(2)update触发器

create trigger tb_user_update_trigger
    after update on sp for each row
    begin
        insert into user_logs(opera_text, opera_time, opera) values
        (concat('更新前的名字=',old.name,' 更新前的年龄=',old.age,' 更新后的名字=',new.name,' 更新后的年龄=',new.age),now(),'update');
    end;
show triggers;
update sp set age=1000 where name='李四';

(3)delete触发器

create trigger tb_user_delete_trigger
    after delete on sp for each row
    begin
        insert into user_logs(opera_text, opera_time, opera)
            values(concat('删除的名字=',old.name,' 删除前的年龄=',old.age),now(),'delete');
    end;
show triggers;
delete from sp where name='李四';

到此这篇关于Mysql中的触发器定义与使用的文章就介绍到这了,更多相关MySQL触发器内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • MySQL触发器的使用

    触发器可以在执行语句前或执行后触发其他 SQL 代码运行.触发器可以读取触发语句改变了哪些数据,但是没有返回值.因此可以使用触发器加强业务逻辑的约束而不需要在应用程序写对应的代码. 从上述描述可以看到,触发器可以简化应用程序的逻辑并且可以提升性能,这是因为使用触发器减少了应用程序和服务端的交互次数.同时,触发器有助于完成自动更新归一化和统计数据.例如,我们可以使用触发器自动统计交易订单总金额,订单数及平均客单价. 然而,MySQL 的触发器的应用场合也十分有限,如果你使用过其他数据库产品的触发器

  • MySQL触发器的使用详解

    目录 1.为什么需要触发器 2.触发器概述 3.触发器的创建 3.1语法 3.2 案例演示 4.查看触发器 5.删除触发器 总结 1.为什么需要触发器 有一些表是互相关联的,比如说商品表和库存表,我们对商品表的数据进行操作,那么对应的库存表还得发生变化,这样才可以保证数据的完整.如果我们是自己手动维护的话,比较麻烦. 这个时候我们可以使用触发器,创建一个触发器,让商品信息数据的插入操作自动触发库存数据的插入操作等,这样我们就不需要担心因为忘记添加库存数据而导致数据丢失了. 2.触发器概述 MyS

  • MySQL触发器的使用场景及方法实例

    触发器: 触发器的使用场景以及相应版本: 触发器可以使用的MySQL版本: 版本:MySQL5以上 使用场景例子: 每当增加一个顾客到某个数据库表时,都检查其电话号码格式是否正确,州的缩写是否为大写 每当订购一个产品时,都从库存数量中减去订购的数量 无论何时删除一行,都在某个存档表中保留一个副本 即:在某个表发生更改时自动处理. 如遇到触发器报错"Not allowed to return a result set from a trigger":请划到最后看详解: 触发器的使用: 创

  • MySQL触发器的使用和优缺点介绍

    目录 前言 1. 触发器概述 2. 触发器的创建 2.1 创建触发器语法 2.2 代码举例 3. 查看.删除触发器 3.1 查看触发器 3.2 删除触发器 4. 触发器的优缺点 4.1 优点 4.2 缺点 4.3 注意点 前言 在实际开发中,我们经常会遇到这样的情况:有 2 个或者多个相互关联的表,如 商品信息和库存信息分别存放在2个不同的数据表中,我们在添加一条新商品记录的时候,为了保证数据的完整性,必须同时在库存表中添加一条库存记录. 这样一来,我们就必须把这两个关联的操作步骤写到程序里面,

  • Mysql中的触发器定义与使用

    目录 一.触发器的介绍 二.触发器的语法 (1)insert触发器 (2)update触发器 (3)delete触发器 一.触发器的介绍 触发器是与表有关的数据库对象,指在insert/update/delete 之前或之后,触发并执行 触发器中定义的SQL语句集合.触发器的这种特性可以协助应用在数据库端确保数据的 完整性,日志记录,数据校验等操作. 使用别名old和new来引用触发器中发生变化的记录内容,这与其它的数据库是相似的. 现在触发器还只支持行级触发,不支持语句级触发. 触发器类型  

  • Mysql中的触发器定义及语法介绍

    目录 1.定义: 2.语法: 3.删除触发器 4.查询触发器 5.触发器类型OLD和NEW的使用 1.定义: 触发器和存储过程相似,都是嵌入到 MySQL 中的一段程序.触发器是由事件来触发某个操作.当数据库执行这些事件时,就会激活触发器来执行相应的操作.这些事件称为触发条件,在MySQL中,有UPDATE,INSERT,和DELETE. 在MySQL中,目前只有UPDATE,INSERT,和DELETE这三种操作,才会触发触发器,其他操作都不支持触发器.这和Oracle中的触发器有很大的区别,

  • Oracle使用触发器和mysql中使用触发器的案例比较

    一.触发器 1.触发器在数据库里以独立的对象存储, 2.触发器不需要调用,它由一个事件来触发运行 3.触发器不能接收参数 --触发器的应用 举个例子:校内网.开心网.facebook,当你发一个日志,自动通知好友,其实就是在增加日志的时候做一个出发,再向表中写入条目. --触发器的效率很高 举例:论坛的发帖,每插入一个帖子都希望将版面表中的最后发帖时间,帖子总数字段进行同步更新,这时使用触发器效率会很高. 二.Oracle 使用 PL/SQL 编写触发器 1.--PL/SQL创建触发器的一般语法

  • MySQL中索引的定义以及操作新手教程

    目录 索引的定义 索引的类型 普通.唯一.主键和全文索引 普通索引(INDEX) 唯一索引(UNIQUE INDEX) 主键索引(PRIMARY KEY) 全文索引(FULLTEXT) 单列索引和组合索引 聚集索引和非聚集索引 索引的创建原则 索引操作 创建索引 查看索引 删除索引 总结 索引的定义 数据库中的索引就像一本书的目录,可以据此快速定位数据库中相关数据的所在位置. 在数据库中,索引被定义为一种特殊的数据结构,由数据库中的一列或多列组合而成,可以用来快速查询数据表中某一特定值的记录.

  • Mysql中的触发器简单介绍及使用案例

    什么是触发器? 触发器是数据库的一个程序,他是用来监听着数据表的某个行为,一旦数据表的这个行为发生了,马上执行相应的sql语句 触发器的语法结构: create trigger 触发器的名称触发器事件 on 监听的表名 for each row 行为发生后执行的sql语句 触发器事件组成::两部分组成: 触发器事件发生的时间-----是在监听的表的行为 after before 常用的是after 触发器执行的内容:增删改 创建order 表的时候,需要注意,因为order在mysql中是一个关

  • 详解 Mysql中的delimiter定义及作用

    初学mysql时,可能不太明白delimiter的真正用途,delimiter在mysql很多地方出现,比如存储过程.触发器.函数等. 学过oracle的人,再来学mysql就会感到很奇怪,百思不得其解. 其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了. 默认情况下,delimiter是分号(;) . 在命令行客户端中,如果有一行命令以分号结束,那么回车后,mysql将会执行该命令.如输入下面的语句 mysql> select * from test_table;

  • 浅谈MySQL中的触发器

    在很多时候,干得利索不如想的明白.方案应该根据场景来设计,不是盲目的依靠经验,当然这也算新经验! 需求是把公司的几套公共系统做成通过邮箱用户名和密码认证,只需记住一对用户名密码,简单为上,只允许用户在ExtMail的web页面修改密码!在做论坛认证的时候,由于论坛的复杂性,想到了如下的几个方案: 通过OAuth2.0做认证,或者自己写接口,问题是只听过,没玩过! 在邮箱修改时,也提交到论坛的数据库.可惜不会ExtMail的Perl代码,且修改代码工作量太大! 先前已经把线上邮箱用户表同步到内网,

  • 探究MySQL中varchar的定义长度

    UTF8字符集下: SQL>create table test(id int auto_increment,name varchar(10),primary key(id)); SQL>insert into test values(null,'1234567890'); Query OK, 1 row affected (0.00 sec) SQL>insert into test values(null,'一二三四五六七八九十'); Query OK, 1 row affected

  • MySQL中触发器和游标的介绍与使用

    触发器简介 触发器是和表关联的特殊的存储过程,可以在插入,删除或修改表中的数据时触发执行,比数据库本身标准的功能有更精细和更复杂的数据控制能力. 触发器的优点: 安全性:可以基于数据库的值使用户具有操作数据库的某种权利.例如不允许下班后和节假日修改数据 库数据: 审计:可以跟踪用户对数据库的操作: 实现复杂的数据完整性规则.例如,触发器可回退任何企图吃进超过自己保证金的期货: 提供了运行计划任务的另一种方法.例如,如果公司的帐号上的资金低于 5 万元则立即给财务人员发送 警告数据. MySQL

  • Android通过json向MySQL中读写数据的方法详解【写入篇】

    本文实例讲述了Android通过json向MySQL中写入数据的方法.分享给大家供大家参考,具体如下: 先说一下如何通过json将Android程序中的数据上传到MySQL中: 首先定义一个类JSONParser.Java类,将json上传数据的方法封装好,可以直接在主程序中调用该类,代码如下 public class JSONParser { static InputStream is = null; static JSONObject jObj = null; static String j

随机推荐