当前位置: 首页 > news >正文

MySQL---触发器

MySQL—触发器

​ 将两个关联的操作步骤写到程序里面,并且要用事务包裹起来,确保两个操作称为一个原子操作,要么全部执行,要么全部不执行

​ 创建一个触发器,让商品信息数据的插入操作自动触发库存数据的插入操作

​ 触发器是由 事件来触发 某个操作,这些事件包括 INSERTUPDATEDELETE 事件。所谓事件就是指用户的动作或者触发某项行为。如果定义了触发程序,当数据库执行这些语句时候,就相当于事件发生 了,就会 自动 激发触发器执行相应的操作。

创建触发器

CREATE TRIGGER 触发器名称
{BEFORE|AFTER} {INSERT|UPDATE|DELETE} ON 表明
FOR EACH ROW
触发器执行语句

说明:

  • 表名 :表示触发器监控的对象。
  • BEFORE|AFTER :表示触发的时间。BEFORE 表示在事件之前触发;AFTER 表示在事件之后触发。
  • INSERT|UPDATE|DELETE :表示触发的事件。
    • INSERT 表示插入记录时触发;
    • UPDATE 表示更新记录时触发;
    • DELETE 表示删除记录时触发。
  • 触发器执行的语句块 :可以是单条SQL语句,也可以是由BEGIN…END结构组成的复合语句块。
DELIMITER //CREATE TRIGGER before_insert_test_tri
BEFORE INSERT ON test_trigger
FOR EACH ROW 
BEGININSERT INTO test_trigger_log(t_node)
VALUES('before insert');END //
DELIMITER ;INSERT INTO test_trigger(t_node)
VALUES('test..');SELECT * FROM test_trigger;
SELECT * FROM test_trigger_log;

DELIMITER //
CREATE TRIGGER salary_check_trigger
BEFORE INSERT ON emp
FOR EACH ROW
BEGINDECLARE mgr_sal DOUBLE;SELECT salary INTO mgr_sal FROM empWHERE employee_id = NEW.manager_id;IF NEW.salary > mgr_salTHEN SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = '薪资不得高于领导薪资';END IF;
END //
DELIMITER ;DESC emp;INSERT INTO emp(employee_id,last_name,email,hire_date,job_id,salary,manager_id)
VALUES(300,'test','tom@126.com',CURDATE(),'AD_VP',10000,103);

查看触发器

  • 查看当前数据库所有触发器的定义
mysql> SHOW TRIGGERS\G;
*************************** 1. row ***************************Trigger: salary_check_triggerEvent: INSERTTable: empStatement: BEGINDECLARE mgr_sal DOUBLE;SELECT salary INTO mgr_sal FROM empWHERE employee_id = NEW.manager_id;IF NEW.salary > mgr_salTHEN SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = '薪资不得高于领导薪资';END IF;
ENDTiming: BEFORECreated: 2023-02-28 15:46:44.71sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTIONDefiner: root@%
character_set_client: utf8
collation_connection: utf8_general_ciDatabase Collation: utf8_general_ci
  • 查看当前数据库中某个触发器的定义
SHOW CREATE TRIGGER salary_check_trigger\G;
  • 从系统库information_schema的TRIGGERS表中查询“salary_check_trigger”触发器的信息。
SELECT * FROM information_schema.TRIGGERS\G;

删除触发器

DROP TRIGGER salary_check_trigger

触发器优缺点

优点:

  • 可以确保数据的完整性
  • 可以帮助记录操作日志
  • 可以用在操作数据前,对数据进行合法性检验

缺点:

  • 可读性差
    ER salary_check_trigger

### 触发器优缺点#### 优点:- 可以确保数据的完整性
- 可以帮助记录操作日志
- 可以用在操作数据前,对数据进行合法性检验#### 缺点:- 可读性差
- 相关数据的变更,可能会导致触发器错误
http://www.lryc.cn/news/24219.html

相关文章:

  • PXC高可用集群(MySQL)
  • pytorch-把线性回归实现一下。原理到实现,python到pytorch
  • js中判断数组的方式有哪些?
  • 【2023unity游戏制作-mango的冒险】-5.攻击系统的简单实现
  • SpringMVC 面试题
  • 布局三八女王节,巧借小红书数据分析工具成功引爆618
  • RISCV学习(1)基本模型认识
  • 【java代码审计】命令注入
  • 速锐得适配北汽EX系列电动汽车CAN总线应用于公务分时租赁
  • 已解决ERROR: Failed building wheel for opencv-python-headless
  • 每日获取安全资讯的网站,国内外共120个
  • HUN工训中心:开关电路和按键信号抖动
  • WordPress 主题 SEO 标题相关函数和过滤器教程wp_get_document_title()
  • Qt 事件机制
  • 【Python】Numpy--np.linalg.eig()求对称矩阵的特征值和特征向量
  • 医疗床头卡(WIFI方案)
  • [YOLO] yolo博客笔记汇总(自用
  • Linux 常用 API 函数
  • 【转载】bootstrap自定义样式-bootstrap侧边导航栏的实现
  • 奇瑞x华为纯电智选车来了,新版ADS成本将大幅下降
  • 机器学习的特征归一化Normalization
  • 程序员看过都说好的资源网站,看看你都用过哪些?
  • Win11的两个实用技巧系列之设置系统还原点的方法、安全启动状态开启方法
  • 【Linux】项目的自动化构建-make/makefile
  • 【Redis学习2】Redis常用数据结构与应用场景
  • 踩了大坑:https 证书访问错乱
  • 大数据技术之Hive(四)分区表和分桶表、文件格式和压缩
  • 环形缓冲区(c语言)
  • 创建自助服务知识库的指南
  • 分层测试(1)分层测试是什么?【必备】