1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

​使用触发器限制表数据被修改

使用触发器限制表数据被修改

在日常维护工作中,我们有时需要对某张表限制修改,但是权限控制不一定能够限制某些特定用户的修改。这时候可以通过创建触发器来限制并提醒对方,当前表暂时不允许修改。

​使用触发器限制表数据被修改

触发器创建步骤

以user1.table2表为例,创建步骤如下:

1. 先查询表数据

SQL> select * from user1.table2;
     ID REMRETIME
---------- ---------
         1 05-JAN-22

2. 创建触发器

CREATE OR REPLACE TRIGGER system.ogg_trg_table2
AFTER INSERT OR DELETE OR UPDATE ON user1.table2
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
DECLARE
  v_session_user varchar2(30);
BEGIN
  v_session_user:=SYS_CONTEXT(USERENV,'SESSION_USER');
  IF v_session_user = 'OGGUSER' THEN
    -- 允许指定用户
    NULL;
  ELSE
    raise_application_error(-20008,'非指定用户不允许修改,请联系管理员。');
  END IF;
END;
/

3. 验证效果

// 表自身用户无法修改表
SQL> conn user1/User1_123
Connected.
SQL> insert into user1.table2 values (2, 2, sysdate);
insert into user1.table2 values (2, 2, sysdate)
            *
ERROR at line 1:
ORA-20008: 非指定用户不允许修改,请联系管理员。
ORA-06512: 在 "SYSTEM.OGG_TRG_TABLE2", line 8
ORA-04088: 触发器 'SYSTEM.OGG_TRG_TABLE2' 的执行时出错

// 指定用户可以修改表
SQL> conn ogguser/Ogguser_123
Connected.
SQL> insert into user1.table2 values (2, 2, sysdate);
1 row created.
SQL> commit;
Commit complete.

结尾

触发器可以很好地限制表数据的修改,同时也可以提醒用户谨慎操作。以上就是创建触发器限制表数据被修改的详细步骤,希望对你有所帮助。

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6305.html