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"表中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小七蒙恩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值