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;
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;
解决方案 »
- 请教Oracle移植到db2相关事项,提供答案者皆有分
- 数据库优化管理
- OCI开发中Insert,Update语句正常,Select语句反而不行,为什么啊。。。要疯了~~
- 请问如果将Windows下的Oracle迁移到Linux下需要注意什么?
- 关于通信通道的文件结束
- 请教一ORACLE错误:ORA-00911 如何解决?很急,在线等待解答
- 怎样实现在ORACLE中的一个表中插入一个记录,就相应的在SQLSERVER的一个表中插入一个记录?
- 把一个表的某个字段复制到另一个表的某个字段
- 很简单的问题:我如何在PL SQL中在一条Select语句之后知道查询到了多少条?
- varchar2的长度问题
- 致命问题-请帮我解决谢谢大家
- dbca建库 建到一半磁盘空间满了 重新建库怎样删除原来的
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;
可不可以
create or replace trigger test
before update on tb for each row
declare
v_u1 varchar2(100):= login_user;
begin
if v_u1 = '011' then
:new.name := :old.name;
end if;
end;