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

mysql触发器的用法

假设有一个名为"user"的MySQL表,包含以下列:

  • id:用户id,自增主键
  • name:用户名
  • email:用户邮箱
  • age:用户年龄
CREATE TABLE user (
  id INT PRIMARY KEY,
  username VARCHAR(50),
  password VARCHAR(50),
  email VARCHAR(50)
);

现在,我们将创建一个触发器,用于在插入新用户时自动计算用户年龄是否大于18岁,并将结果存储在另一个表中。

首先,创建一个存储年龄计算结果的表"age_results",包含以下列:

  • id:主键
  • user_id:用户id
  • is_above_18:是否年满18岁(0表示未满18岁,1表示年满18岁)
CREATE TABLE age_results (
  id INT AUTO_INCREMENT PRIMARY KEY,
  user_id INT,
  is_above_18 INT
);

接下来,创建触发器,命名为"check_age_trigger",在"user"表上的插入操作时触发:

CREATE TRIGGER check_age_trigger
AFTER INSERT ON user
FOR EACH ROW
BEGIN
  DECLARE user_age INT;
  SET user_age = TIMESTAMPDIFF(YEAR, NEW.age, CURDATE());
  
  IF user_age >= 18 THEN
    INSERT INTO age_results (user_id, is_above_18) VALUES (NEW.id, 1);
  ELSE
    INSERT INTO age_results (user_id, is_above_18) VALUES (NEW.id, 0);
  END IF;
END;

触发器中的逻辑如下:

  • 获取插入操作的新用户的年龄,并计算年龄差值(用户年龄到当前日期的年数差)
  • 如果年龄差值大于等于18,则将用户id和1(表示年满18岁)插入"age_results"表
  • 否则,将用户id和0(表示未满18岁)插入"age_results"表

现在,每当向"user"表插入一条新用户记录时,触发器会自动计算用户年龄是否大于18岁,并将结果存储在"age_results"表中。


http://www.kler.cn/news/337750.html

相关文章:

  • MYSQL 事物隔离级别的区别与现象
  • 基于SSM的坚果金融投资管理系统、坚果金融投资管理平台的设计与开发、智慧金融投资管理系统的设计与实现、坚果金融投资管理系统的设计与应用研究(源码+定制+开发)
  • 使用seata管理分布式事务
  • Java基础——`UUID.randomUUID()` 方法详细介绍
  • 第五讲-窗口控件QDialog
  • 抖音小红书AI真人美女套图玩法,多种变现方式,手把手教你
  • 无人机+无人车+机器狗+无人船:大规模组网系统技术详解
  • 【M365运维】在SPO文档库里删除文档时,遇到文档被签出无法删除。
  • 《大规模语言模型从理论到实践》第一轮学习--强化学习(RLHF)
  • 【Java 问题】基础——泛型
  • 视频加字幕用什么软件最快?12款工具快速添加字幕!
  • 算法知识点————贪心
  • 【Python进阶】Python中的操作系统接口:使用os模块进行系统调用
  • Qt小bug — LINK : fatal error LNK1158: 无法运行“rc.exe“
  • 杂谈c语言——6.浮点数的存储
  • Nginx06-静态资源部署
  • DTO(数据传输对象)
  • 硬件电路中高频信号终端电阻作用
  • 服务器虚拟化的详细学习顺序
  • pygame--超级马里奥(万字详细版)