我有一张几行的桌子。这些行只能通过我的应用程序修改,即我需要通过使用客户端(例如HeidiSQL)来防止手动编辑。有可能阻止它吗?
我可以做以下事情:
但我想知道,是否可以防止手动编辑数据库中的数据?
是否有任何数据库供应商(Oracle,SQL,MySQL)提供这些类型的功能?
答案 0 :(得分:4)
您可以在数据库上设置用户权限。这可以在你提到的所有DBmanagers中实现。
实施例: 在这种情况下,我将使用3种用户权限类型
答案 1 :(得分:0)
您可以使用登录后触发器来检测客户端并引发异常:
create or replace trigger prevent_sqldeveloper
after logon on database
declare
v_program varchar2(48);
v_sid number;
v_serial# number;
begin
select sid, serial#, program into v_sid, v_serial#, v_program
from v$session where sid=sys_context('userenv', 'sid');
if (v_program like 'SQL Developer%') then
raise_application_error(-20001,
'You''re not allowed to connect from SQL*Developer');
end if;
end prevent_sqldeveloper;
/
此致