在触发MySQL中拒绝删除语句

时间:2012-04-26 11:42:41

标签: mysql

我有一个客户想要运行DELETE语句的数据库。但是在数据库方面,记录应该只是隐藏而不是删除。

我可以使用BEFORE DELETE TRIGGERvisiblity标记更改为false而不是删除记录吗?

1 个答案:

答案 0 :(得分:1)

我认为在MySQL中执行此操作的唯一方法(正如Alex Monthy暗示的那样,这个逻辑真的属于哪个?)是使用 after 删除触发器后重新插入记录visibility标志设置为false:

CREATE TRIGGER foo AFTER DELETE ON my_table FOR EACH ROW
  INSERT INTO my_table (visibility,     colA,     colB,     colC)
                VALUES (     false, OLD.colA, OLD.colB, OLD.colC);

可以从之前的触发器中止删除操作(只是让触发器引发错误,例如调用一个不存在的过程),但这不会使你更新{{ 1}}根据需要标记。