如何使用触发器来防止在表上删除并更新?

时间:2019-01-08 16:31:31

标签: mysql database-trigger soft-delete

我想使用触发器在MySQL中实现软删除,并执行更新而不是删除。然后我发现mysql没有触发器代替。

因此,我想使用“触发前”功能,但是我找不到在不引发错误的情况下中止删除的任何方法。

我正在寻找这样的东西:

use testdb;
DELIMITER $$
CREATE TRIGGER `table1_before_delete` BEFORE DELETE ON `table1`
FOR EACH ROW
BEGIN
    call abort_delete_and_dont_raise_error();
    UPDATE table1 SET deleted_at=NOW() where id=old.id;
END$$   
DELIMITER ; 

我找不到这样的东西。

1 个答案:

答案 0 :(得分:0)

在不抛出错误的情况下,您无法中止Mysql中的删除。您不应使用删除之前的触发器来实现软删除机制。这是错误的方式。您应该在应用程序中实现软删除机制。