用mysql写一个触发器在更新person前如果user表的v为0且插入person的s为2就执行更新否则就终止
首先创建两个表user和person:
CREATE TABLE user (
id INT PRIMARY KEY,
v INT
);
CREATE TABLE person (
id INT PRIMARY KEY,
s INT
);
然后创建一个触发器:
CREATE TRIGGER update_person
BEFORE UPDATE ON person
FOR EACH ROW
BEGIN
DECLARE v_value INT;
SELECT v INTO v_value FROM user WHERE id = NEW.id;
IF v_value = 0 AND NEW.s = 2 THEN
UPDATE person SET s = NEW.s WHERE id = NEW.id;
ELSE
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Update operation on person table is not allowed.';
END IF;
END;
这个触发器会在每次更新person表的前面执行。它会检查user表中id等于被更新的person行的id的v值是否为0,以及被更新的person行的s值是否为2。如果两个条件都满足,它会执行更新操作;否则,它会发出一个信号,终止更新操作。
原文地址: https://www.cveoy.top/t/topic/bjty 著作权归作者所有。请勿转载和采集!