MySQL 触发器:插入数据前验证用户状态
CREATE TRIGGER trigger_bbb_insert AFTER INSERT ON bbb FOR EACH ROW BEGIN DECLARE status_value INT; SELECT status INTO status_value FROM aaa WHERE user = NEW.user; IF status_value = 1 THEN INSERT INTO bbb (user, value) VALUES (NEW.user, NEW.value); ELSE SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Cannot insert into bbb because user status is not active'; END IF; END;
在上述触发器中,我们使用了 DECLARE 语句来声明一个变量 status_value,用于存储查询出来的状态值。然后,我们使用 SELECT 语句来查询 aaa 表中对应 user 的 status 值,并将其存储在 status_value 变量中。接下来,我们使用 IF 语句来判断 status_value 是否等于 1,如果是,则执行插入操作,将 NEW.user 和 NEW.value 插入到 bbb 表中。否则,我们使用 SIGNAL 语句抛出一个错误,提示用户无法插入 bbb 表中的数据,因为对应的用户状态不是活动状态。
原文地址: https://www.cveoy.top/t/topic/mI0E 著作权归作者所有。请勿转载和采集!