数据库知识复习:Mysql触发器

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 数据库知识复习:Mysql触发器

         距离小红老师的《数据库原理》课程已经有一年了,增删改查大家肯定还记得,但是触发器估计忘得差不多了吧(至少我是还给小红老师了),下面通过一个例子来复习一下触发器trigger的知识。

一、触发器的定义

      触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。其定义伪代码如下:

DELIMITER ||
CREATE TRIGGER trigger_name trigger_time trigger_event 
ON table_name FOR EACH ROW 
BEGIN
    trigger_statement;
    ...;
    ...;
END
||
DELIMITER ;

image.gif

释义:

       DELIMITER ||:将结束符号变成||,避免与trigger_statement中的分行符;冲突

       trigger_name:触发器名称

       tirgger_time:触发时机:BEFORE,即事件之前或者AFTER,即事件之后

       trigger_event:触发事件:INSERT、DELETE或者UPDATE

       table_name:表示建立触发器的表名,即在哪张表上建立触发器

       FOR EACH ROW:表示任何一条记录上的操作满足触发事件都会触发该触发器

       trigger_statement:触发器的程序体,可以是一条SQL语句或者多条语句

       ||:表示触发器创建完成

       DELIMITER ;:触发器创建完成后,将结束符号还原回;

二、触发器创建实例

-- 创建数据库
create database book_test;
use book_test;
-- 创建图书信息表
create table bookinfo(
book_id int primary key auto_increment,
book_name varchar(20) not null,
price float(6,2) not null,
public_date date not null,
store int not null
);
-- 插入图书数据
insert into bookinfo(book_name,price,public_date,store) values('Android移动应用开发',39.8,'2021-12-26',6);
insert into bookinfo(book_name,price,public_date,store) values('Java程序设计',56.2,'2011-12-26',15);
insert into bookinfo(book_name,price,public_date,store) values('算法与数据结构',20,'2015-02-10',18);
select * from bookinfo
-- 创建日志数据表
CREATE TABLE `logs` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `log` varchar(255) DEFAULT NULL COMMENT '日志说明',
  PRIMARY KEY (`Id`)
)
-- 创建触发器,作用:当在bookinfo中插入一条数记录时,会在logs中生成一条日志信息
DELIMITER ||
CREATE TRIGGER user_log AFTER INSERT 
ON bookinfo FOR EACH ROW 
BEGIN
    DECLARE s1 VARCHAR(40) character set utf8;
    DECLARE s2 VARCHAR(40) character set gbk;
    SET s1 = ' is created';    
    #函数CONCAT将字符串连接  NEW.columnname:新增行的某列数据
    SET s2 = CONCAT(NEW.book_name,s1); 
    INSERT INTO logs(log) values(s2);
END
||
DELIMITER ;
-- 查看创建的触发器
SELECT * FROM information_schema.triggers;
-- 测试触发器
select * from logs;
insert into bookinfo(book_name,price,public_date,store) values('解忧杂货店',48,'2016-03-03',48);
select * from logs;

image.gif

三、运行结果

1>触发器创建成功:

image.gif

2>触发器执行成功:

image.gif

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
12天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
26 1
|
14天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
29 4
|
21天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
101 1
|
8天前
|
运维 关系型数据库 MySQL
安装MySQL8数据库
本文介绍了MySQL的不同版本及其特点,并详细描述了如何通过Yum源安装MySQL 8.4社区版,包括配置Yum源、安装MySQL、启动服务、设置开机自启动、修改root用户密码以及设置远程登录等步骤。最后还提供了测试连接的方法。适用于初学者和运维人员。
87 0
|
22天前
|
存储 安全 关系型数据库
2024 Mysql基础与进阶操作系列之MySQL触发器详解(21)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]
MySQL触发器的使用场景之数据完整性约束、如何具体创建person的日志表、触发器与存储过程的对比与选择、触发器的性能和注意事项等具体操作详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
22天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第26天】数据库作为现代应用系统的核心组件,其性能优化至关重要。本文主要探讨MySQL的索引策略与查询性能调优。通过合理创建索引(如B-Tree、复合索引)和优化查询语句(如使用EXPLAIN、优化分页查询),可以显著提升数据库的响应速度和稳定性。实践中还需定期审查慢查询日志,持续优化性能。
51 0
|
5月前
|
存储 SQL 关系型数据库
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】(2)
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】
|
5月前
|
存储 SQL 关系型数据库
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】(1)
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】
|
3月前
|
存储 关系型数据库 MySQL
MySQL 中的触发器数量之谜
【8月更文挑战第31天】
39 0
|
3月前
|
SQL 数据采集 关系型数据库