MySQL 触发器实现条件插入:基于 AAA 表状态控制 BBB 表插入
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,否则抛出异常,插入失败。
原文地址: https://www.cveoy.top/t/topic/mI0d 著作权归作者所有。请勿转载和采集!