4

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

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

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

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

4

1 回答 1

2

正如其他人在评论中提到的那样,执行此操作的正确方法通常是通过表级授权。

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

一种方法是使用“删除前”触发器,并执行一个总是会导致错误的简单 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 ;
于 2013-01-14T14:54:24.637 回答