首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

oracle 里面限制某个用户不能更改表里面的某个字段的触发器该如何写

2014-01-01 
oracle 里面限制某个用户不能更改表里面的某个字段的触发器该怎么写比如用户011 不能更改tb 表里面的name

oracle 里面限制某个用户不能更改表里面的某个字段的触发器该怎么写
比如用户011 不能更改tb 表里面的name字段该怎么写这个触发器?
[解决办法]

CREATE OR REPLACE  TRIGGER TEST
BEFORE  UPDATE OF name
ON tb FOR EACH ROW
DECLARE
  L_USERNAME VARCHAR2(100);
BEGIN
  SELECT T.USERNAME INTO L_USERNAME FROM USER_USERS T;
  IF L_USERNAME = '011' THEN
    DBMS_OUTPUT.PUT_LINE('YOU CAN NOT UPDATE THE COLUMN');
    ROLLBACK;
  END IF;
END;

[解决办法]
create or replace trigger test_trig 
before update on tb
declare
user varchar2(10);
begin
   SELECT SYS_CONTEXT('USERENV','SESSION_USER') into user from dual;
   if user='011 ' and updating('name') then
      raise_application_error(-20001,'not allow change'
   end if;
end;

可不可以

热点排行