IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 第17章 触发器 -> 正文阅读

[大数据]第17章 触发器

1.触发器概述

*MySQL从 5.0.2 版本开始支持触发器。MySQL的触发器和存储过程一样,都是嵌入到MySQL服务器的一段程序。

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

*当对数据表中的数据执行插入、更新和删除操作,需要自动执行一些数据库逻辑时,可以使用触发器来实现。

2.触发器的创建

*创建触发器语法:

?? CREATE TRIGGER 触发器名称

{BEFORE|AFTER} {INSERT|UPDATE|DELETE} ON 表名

FOR EACH ROW

触发器执行的语句块;

*举例1:

创建触发器:创建名称为before_insert的触发器,向test_trigger数据表插入数据之前,向test_trigger_log数据表中插入before_insert的日志信息。

DELIMITER //

CREATE TRIGGER before_insert

BEFORE INSERT ON test_trigger

FOR EACH ROW

BEGIN

INSERT INTO test_trigger_log (t_log)

VALUES('before_insert');

END //

DELIMITER ;

*举例2:

?? 创建名称为after_insert的触发器,向test_trigger数据表插入数据之后,向test_trigger_log数据表中插 入after_insert的日志信息。

DELIMITER //

CREATE TRIGGER after_insert

AFTER INSERT ON test_trigger

FOR EACH ROW

BEGIN

INSERT INTO test_trigger_log (t_log)

VALUES('after_insert');

END //

DELIMITER ;

*举例3:

???????? 定义触发器“salary_check_trigger”,基于员工表“employees”INSERT事件,在INSERT之前检查 将要添加的新员工薪资是否大于他领导的薪资,如果大于领导薪资,则报sqlstate_value'HY000'的错误,从而使得添加失败。

DELIMITER //

CREATE TRIGGER salary_check_trigger

BEFORE INSERT ON employees FOR EACH ROW

BEGIN

DECLARE mgrsalary DOUBLE;

SELECT salary INTO mgrsalary FROM employees WHERE employee_id = NEW.manager_id;

IF NEW.salary > mgrsalary THEN

SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = '薪资高于领导薪资错误';

END IF;

END //

DELIMITER ;

3.查看、删除触发器

*查看触发器:

?? (1)查看当前数据库的所有触发器的定义

?? SHOW TRIGGERS\G

?? (2)查看当前数据库中某个触发器的定义

?? SHOW CREATE TRIGGER 触发器名

(3)从系统库information_schema的TRIGGERS表中查询“salary_check_trigger”触发器的信息。

?? SELECT * FROM information_schema.TRIGGERS;

*删除触发器:

?? DROP TRIGGER IF EXISTS 触发器名称;

4.触发器的优缺点

*优点:触发器可以确保数据的完整性;可以帮助记录操作日志;触发器还可以用在操作数据前,对数据进行合法性检查

*缺点:可读性差;相关数据的变更可能会导致触发器出错

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-11-05 00:34:29  更:2022-11-05 00:39:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 -2025/3/4 7:19:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码