📄 用system为其他用户建立trigger.txt
字号:
--此试验使用system用户建立对peter用户的tirgger.
--peter用户没有建trigger的权限,且trigger在system内,peter不能删除trigger
connect system/manager
--system建立用户
CREATE USER peter
IDENTIFIED BY peter
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
QUOTA 15m ON users
;
--system grant 连接create table
grant create session to peter;
grant create table to peter;
--用户create table
connect peter/peter
create table sm_test(name varchar2(10));
--用system建立在system schema内建立对peter的表控制的trigger
--关键在on 语句 peter.sm_test
connect system/manager
create or replace trigger han
before insert
on peter.sm_test
begin
--不是在2000不许插入
if to_char(sysdate,'yyyy') !='2000' then
RAISE_APPLICATION_ERROR (-20501, '必须在2000年.');
end if;
end;
/
connect peter/peter
--测试
insert into sm_test values('Tom');
ERROR 位于第 1 行:
ORA-20501: 必须在2000年.
ORA-06512: 在"SYSTEM.HAN", line 5
ORA-04088: 触发器 'SYSTEM.HAN' 执行过程中出错
--peter用户无法删除han
SQL> drop trigger han;
drop trigger han
*
ERROR 位于第 1 行:
ORA-04080: 触发器 'HAN' 不存在
SQL> drop trigger system. han;
drop trigger system. han
*
ERROR 位于第 1 行:
ORA-01031: 权限不足
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -