触发以防止在表上删除

时间:2013-01-14 14:04:52

标签: mysql

如何防止删除MySQL 5.1中特定表的任何行?

我不需要任何where条件,我只是不希望删除这些表中的任何行。

必须在MySQL级别上完成,因为我们还使用已接受删除的已购买软件。我们使用MySQL 5.1.66-cll

我试图为此调整不同的触发器,但我无法成功。

1 个答案:

答案 0 :(得分:2)

正如其他人在评论中所提到的,正确的方法是通过表级授权。

但是,可以根据您的要求使用触发器来完成。

执行此操作的一种方法是使用“before delete”触发器,并执行始终导致错误的简单SQL语句。例如,您可以调用不存在的存储过程,如“do_not_delete”。

尝试这样的事情:

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 ;