zoukankan      html  css  js  c++  java
  • MySQL触发器使用详解

    触发器: 事先写好一段代码, 自动的监听某些要发生的操作事件(增删改), 当某些事件发生的时候,会自动触发写好的代码.

    触发器要素: 监听对象(表: 中的数据行), 事件类型(增删改), 事件时间(前后), 触发器名字(自定义)

    一、创建触发器

    事先将一段需要执行的代码维护好

    一个表中只能有一个对应时间,对应类型的触发器: 一张表最多有6个触发器

    触发时间: before和after
    事件类型: insert, update 和delete

    基本语法

    create trigger 触发器名字 事件时间 事件类型 on 表名 for each row
    begin -- 代表开始大括号{
    -- 触发器的内部代码;
    -- 每一条语句都得有语句结束符分号: 要不然无法正常执行
    end -- 代表结束大括号}

    在触发器构造结构的过程中: 因为触发器内部会有语句结束符,所以会中断触发器结构: 需要临时的在创建触发器的时候, 修改语句结束符(不再是分号)
    delimiter 自定义语句结束符
    在创建完触发器之后: 使用自定义的语句结束符结束,再修改回来
    delimiter ; -- 改回来

    触发器的创建可以使用最简触发器: 触发器内部只有一条语句: 可以省略”大括号”: begin和end, 这时候也不需要修改临时语句结束符.

    二、查看触发器

    查看触发器的结构

    查看所有触发器或者部分触发器: show trigger like ‘pattern’;

    触发器存在于表中: information_schema.triggers

    三、使用触发器

    触发器是在定义的时候就已经为表进行绑定的: 不是手动,是当被绑定的表中发生了指定时间内的指定事件的时候, 会自动触发.

    触发器: after insert on t_order: 在订单被插入到数据表(t_order)的时候会自动触发.

    插入了一条订单记录,导致商品表的库存被减少,触发器内部处理

    四、删除触发器

    触发器不能被修改,只能先删除,后增加.
    drop trigger 触发器名字;

    五、触发器记录

    触发器记录: 当触发器绑定表(t_order),上面的记录发生修改时(增删改), 系统会在修改之前, 模拟将要发生之后和发生之前的结果.

    系统提供了两个关键字来保存模拟的结果: old和new

    • old: 代表的是数据要发生操作之前的结果: 插入操作没有old
    • new: 代表是数据要发生操作之后的结果: 删除操作没有new

    old和new都是在触发器的内部使用: old/new.字段名: old.num代表原订单的商品数量, new.num代表更改之后的订单的对应商品数量.

    插入订单看商品数据

    触发器对应的事件的操作与被绑定表的记录是同时生效的: 要么都成功,要么都失败.

    如何通过触发器阻止不合理的数据的操作的发生呢?暴力

  • 相关阅读:
    用Java实现四则运算
    敏捷开发角色分配
    需求分析之WBS
    需求分析之NABCD
    电梯演说
    开发流程的选择
    软件团队模式的选择
    维护日程管理项目
    日程管理系统中找错误
    Android的测试
  • 原文地址:https://www.cnblogs.com/chenjiacheng/p/6522212.html
Copyright © 2011-2022 走看看