我有一个客户想要运行DELETE
语句的数据库。但是在数据库方面,记录应该只是隐藏而不是删除。
我可以使用BEFORE DELETE TRIGGER
将visiblity
标记更改为false
而不是删除记录吗?
答案 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}}根据需要标记。