我想取消 DELETE 触发。这个想法是在删除之前,设置列 hide = "Y"
然后取消 TRIGGER 事件,而不是真正删除该行。
可能吗?
最佳答案
您可以取消删除,但无法更改 DELETE
触发器中的值。
DELIMITER $$
CREATE TRIGGER bd_t1_each BEFORE DELETE ON t1 FOR EACH ROW
BEGIN
//This will not work, because the `NEW` virtual table does not exist in a delete trigger.
SET NEW.hide = 'Y';
//Raising an error will work.
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'DELETE canceled';
END $$
DELIMITER ;
相反,您应该创建一个存储过程来隐藏您的行:
DELIMITER $$
CREATE PROCEDURE delete_t1_row (pID INTEGER)
BEGIN
UPDATE t1 SET hide = 'Y' WHERE id = pID;
END $$
DELIMITER ;
关于mysql - 使用触发器取消删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8056964/