Mysql 触发器

Mysql触发器

1、1 触发器定义

​ 触发器是由事件来触发某个操作, 事件包括 insert update delete事件,

优势:

  1. 保证数据完整性。
  2. 触发器可以帮助记录操作日志
  3. 触发器可以用在操作数据前,对数据进行合法性检测

劣势:

  1. 可读性差。由于触发器是由事件驱动,不受应用层控制。对系统维护不友好
  2. 相关数据表结构的变更,有可能会导致触发器错误。

1、2 触发器使用

  • 创建触发器
触发器创建语法
CREATE TRIGGER name
{BEFORE|AFTER} {INSERT|UPDATE|DELETE} ON 表名
FOR EACH ROW
触发执行的语句块

 #错误程序 固定格式
SIGNAL SQLSTATE "错误码" SET MESSAGE_TEXT = '错误信息'

举例
DELIMITER //
CREATE TRIGGER trigger_insert_live
AFTER INSERT ON nlsg_live
FOR EACH ROW
BEGIN
    # 自定义错误流程判断
    IF NEW.id > 10
        THEN SIGNAL SQLSTATE "HY001" SET MESSAGE_TEXT = 'error id > 10'; #自定义校验
    END IF;
    INSERT INTO nlsg_live_info(live_pid) VALUE(NEW.id);  #NEW 为当前insert 数据对象
END //
DELIMITER ;

说明:
– BEFORE|AFTER 表示事件触发时间。BEFORE在事件之前触发 AFTER在事件之后触发。
– 表名 :表示触发器监控对象。
– {INSERT|UPDATE|DELETE} : 表示触发事件。
– 语句块 : 可以是单条 也可以是由BEGIN…END 结构组合的复合语句。
+ 自定义错误程序: SIGNAL SQLSTATE “错误码” SET MESSAGE_TEXT = ‘错误信息’;
+ NEW : 关键字new为触发事件(insert|update)数据的对象。
+ OLD : 关键字 为delete事件数据的对象 OLD值因为是删除操作,所以全部是只读的。
* 查看触发器

#方式一  查看当前数据库触发器信息
SHOW TRIGGERS;
#方式二  查看当前数据库某个触发器信息
SHOW CREATE TRIGGER trigger_name;
#方式三   查看系统库所有的触发器信息
select * from information_schema.TRIGGERS;
  • 删除触发器
 #方式一
DROP TRIGGER trigger_name;
 #方式二。 检索后删除   推荐使用
DROP TRIGGER IF EXISTS trigger_name;

Original: https://www.cnblogs.com/Kuju/p/16173951.html
Author: 酷酷的sinan
Title: Mysql 触发器

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/599238/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • mysql绿色版在windows系统中的启动

    Original: https://www.cnblogs.com/java265/p/15597871.htmlAuthor: java265Title: mysql绿色版在wi…

    数据库 2023年5月24日
    091
  • 姜还是老的辣,看看老战哥的老底儿和老道

    上周日,2022年8月7日,参加了一场久违的半马。中伏天的傍晚,热度不减,全程挥汗如雨,虽不是PB,但也算尽力。晒一下战绩。 支付宝安全发这个通道要对接,今天上午10点,产品经理跟…

    数据库 2023年6月9日
    0140
  • Git 误删本地代码恢复

    先复习一下本地 git 的三个区域着急的老哥可以直接冲恢复误删文件和总结 本地 git 的面貌 如图(向廖雪峰老师借的图,0.0)所示,本地有三块区域,工作区、暂存区(stage)…

    数据库 2023年6月9日
    098
  • requests模块的使用

    安装:pip install requests get请求 1、发送 get 请求 import requests header = { ‘referer’: ‘https://w…

    数据库 2023年6月9日
    0104
  • 代码更新提交到GIT

    1、先克隆代码到本地做备份(在需要克隆项目的的那个文件夹下使用Git Bash Here可以直接定位到当前目录,不让需要定位cd命令到目录再使用克隆命令) $ git clone …

    数据库 2023年6月11日
    0103
  • 2022-08-19 PreparedStatement

    PreparedStatement接口是 Statement的子接口,它表示一条预编译过的SQL语句 什么是SQL注入 SQL注入是利用某些系统没有对用户输入的数据进行充分的检查,…

    数据库 2023年5月24日
    099
  • 新版 google 谷歌浏览器跨域问题

    新版本的firefox火狐浏览器限制了 127.0.0.1 本地部署测试的时候,用火狐浏览器需要把 前端的 后台中的服务地址改成 http://localhost:8081 浏览器…

    数据库 2023年6月6日
    0100
  • 23种设计模式之迭代器模式

    文章目录 概述 迭代器模式的优缺点 迭代器模式的结构和实现 * 模式结构 模式实现 总结 ; 概述 迭代器模式就是顺序访问聚集中的对象,一般来说,集合中非常常见,如果对集合类比较熟…

    数据库 2023年6月6日
    071
  • JavaWeb-MVC、过滤器

    一、MVC架构图 Model 业务处理:业务逻辑(Service) 数据持久层:CRUD(Dao) View 展示数据 提供连接发起Servlet请求(a,form,img&#82…

    数据库 2023年6月16日
    0108
  • 多商户商城系统功能拆解28讲-平台端营销-消费奖励

    多商户商城系统,也称为B2B2C(BBC)平台电商模式多商家商城系统。可以快速帮助企业搭建类似拼多多/京东/天猫/淘宝的综合商城。 多商户商城系统支持商家入驻加盟,同时满足平台自营…

    数据库 2023年6月14日
    095
  • 主从复制直接转换MGR_5.7验证试验

    IP port role info 192.168.188.51 4000 node1 master 192.168.188.52 4000 node2 slave1 192.16…

    数据库 2023年6月16日
    0231
  • 2018年最新JAVA面试题总结之框架(4)

    转自于:https://zhuanlan.zhihu.com/p/40098726 1、谈谈对spring框架的了解 ,spring有什么作用(IOC,AOP),spring的核心…

    数据库 2023年6月16日
    094
  • Maven进行clean时报错,解决方法

    Q1:由于网络原因,maven仓库中产生了后缀LastUpdated文件,再次clean直接报错 参考方法:https://www.cnblogs.com/DDgougou/p/1…

    数据库 2023年6月9日
    0118
  • 迷宫回溯算法(递归练习)

    1:迷宫问题: 用一个7 x 8的矩形表示迷宫,其中 1表示障碍物,2表示走过的路,3表示走过的路(走不通为3),通过设计编写程序设置起点达到终点的的路线: 2:思路: 先画出迷宫…

    数据库 2023年6月6日
    0252
  • Stack

    供自己巩固集合知识时写的笔记,不会对所有的内容都介绍栈(Stack)是一种后进先出(LIFO:Last In First Out)的数据结构 Stack只有入栈和出栈的操作: 把元…

    数据库 2023年6月9日
    081
  • 快速入门上手Markdown

    第一次接触 Markdown是写代码初期看很多大佬的 github,他们的项目一定会有一份文件叫 Readme.md的文件他们由一些简单美观的符号和汉字字母组成,编译之后成为一篇简…

    数据库 2023年6月11日
    095
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球