如何防止删除MySQL 5.1中特定表的任何行?
我不需要任何where条件,我只是不想删除这些表中的任何行。
必须在MySQL级别上完成,因为我们还使用购买的接受删除的软件。我们使用MySQL 5.1.66-cll
我试着调整不同的触发器,但我不能成功。
最佳答案
正如其他人在评论中提到的那样,正确的方法通常是通过表级授权。
但是,可以根据您的要求使用触发器来完成。
一种方法是使用“before delete”触发器,并执行一个始终会导致错误的简单SQL语句。例如,您可以调用一个不存在的存储过程,例如“doxNothDelphi”。
试试这样的:
delimiter $$
drop trigger if exists tr_your_table_no_deletes $$
create trigger tr_your_table_no_deletes before delete on your_table for each row begin
call do_not_delete();
end $$
delimiter ;