MySQL 触发器实现条件插入:基于 AAA 表状态控制 BBB 表插入

本文介绍如何使用 MySQL 触发器,根据 AAA 表中 'user' 对应的 'status' 状态,控制 BBB 表的插入操作。当 AAA 表中 'status' 为 1 时,允许插入 BBB 表,否则抛出异常阻止插入。

表结构

表 aaa:

CREATE TABLE aaa (
  id INT PRIMARY KEY AUTO_INCREMENT,
  'user' VARCHAR(20) NOT NULL,
  'status' TINYINT NOT NULL DEFAULT 0
);

表 bbb:

CREATE TABLE bbb (
  id INT PRIMARY KEY AUTO_INCREMENT,
  'user' VARCHAR(20) NOT NULL,
  'info' VARCHAR(100) NOT NULL,
  FOREIGN KEY ('user') REFERENCES aaa('user')
);

触发器实现

插入 bbb 时需要满足 aaa 中 'status' 为 1 的条件,可以使用触发器实现:

CREATE TRIGGER bbb_insert_trigger
BEFORE INSERT ON bbb
FOR EACH ROW
BEGIN
  DECLARE aaa_status TINYINT;
  SELECT 'status' INTO aaa_status FROM aaa WHERE 'user' = NEW.'user';
  
  IF aaa_status = 1 THEN
    -- 可以插入 bbb
  ELSE
    SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Cannot insert into bbb';
  END IF;
END;

这里定义了一个触发器 bbb_insert_trigger,当插入 bbb 一行时触发,首先查询 aaa 表中对应的 'user' 的 'status' 值,如果为 1 则继续插入 bbb,否则抛出异常,插入失败。

MySQL 触发器实现条件插入:基于 AAA 表状态控制 BBB 表插入

原文地址: https://www.cveoy.top/t/topic/mI0d 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录