《MYSQL数据库防止mysql表被清空的方法详解》要点:
本文介绍了MYSQL数据库防止mysql表被清空的方法详解,希望对您有用。如果有疑问,可以联系我们。
为阻止用户删除或清空表以及数据,可以直接从权限下手,给他少量的权限即可.
比如,防止用户进行truncate 操作, 可以给如下权限:
MYSQL教程
现在用新用户ytt3登陆并且执行truncate,发现被禁止.
MYSQL教程
当测试时,一般来说,管理员为了方便懒得去分配各种各样细的权限.
那么,在创建表时,就得给这张表来做对应的限制.
当然了,生产环境不建议这么做.MYSQL教程
创建一个基于语句的触发器就可以:
MYSQL教程
t_girl=# sf prevent_truncate
create or replace function public.prevent_truncate()
returns trigger
language plpgsql
as $functio$
begin
raise exception 'prevent "%" to be truncated!', tg_table_schema||tg_table_name;
return new;
end;
$function$MYSQL教程
t_girl=# d j2
table "ytt.j2"
column | type | modifiers
--------+---------+-----------
id | integer |
str2 | text |
triggers:
trigger_truncate_before before truncate on j2 for each statement execute procedure ytt.prevent_truncate()MYSQL教程
t_girl=#MYSQL教程
t_girl=# truncate table j2;
error: prevent "ytt.j2" to be truncated!MYSQL教程
这种方法也只是对于提供了这项功能的数据库才ok. 比如mysql的触发器只提供了基于行的操作,那么语句的操作就不能触发了.
所以,如果在mysql上来实现这点,就比较麻烦.
要么,就从权限入手,
MYSQL教程
要么,就对数据库的操作用sproc封装起来,
MYSQL教程
转载请注明本页网址:
http://www.vephp.com/jiaocheng/6455.html