我有一个包含 3 个字段的表,其中一个是“状态”。
status 是一个 ENUM,可能包含“a”、“b”或“c”内容。
我需要找到一种方法来拒绝对“status”=“b”的所有行进行任何更新,甚至不允许根用户更新这些行。所以这就像让这一行成为“最终”。
如果状态 = a 或状态 = c,则应允许更新。
有什么办法可以做到这一点吗?
谢谢!
您可以使用此触发器 -
DELIMITER $$
CREATE TRIGGER trigger1
BEFORE UPDATE
ON table1
FOR EACH ROW
BEGIN
IF OLD.status = 'b' THEN
SIGNAL SQLSTATE '02000' SET MESSAGE_TEXT = 'Cannot update value';
END IF;
END
$$
DELIMITER ;
如果你知道嘟嘟用户的祸根并希望允许他更新,那么你可以使用这个条件 -
...
IF CURRENT_USER() <> 'root@localhost' AND OLD.status = 'b' THEN
SIGNAL SQLSTATE '02000' SET MESSAGE_TEXT = 'Cannot update value';
END IF;
...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)