--只需有对触发器上触发对象(这里是你的表)有权限操作就可以了grant to insert,delete,update on 触发的表 to opr
倒,被你忽悠了,试了下不成的. SQL> grant execute scott.check_client to sys;
grant execute scott.check_client to sys
ORA-00990: missing or invalid privilege
SQL>
--一个简单的例子,你自己看下 SQL> desc test; 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- A NUMBER(20) B NUMBER(20)SQL> create table test2 as select * from test where 1<>1 2 /表已创建。SQL> grant insert,delete,update on test to wkc168 2 /授权成功。SQL> edi 已写入 file afiedt.buf 1* grant insert,delete,update on test2 to wkc168 SQL> /授权成功。 SQL> create or replace trigger tri_test before insert or delete or update on test for each row 2 begin 3 insert into test2 values(:new.a,:new.b); 4 end; 5 /触发器已创建SQL> edi 已写入 file afiedt.buf 1* insert into scott.test values(168,28) SQL> /已创建 1 行。SQL> commit 2 /提交完成。SQL> select * from scott.test2; A B ---------- ---------- 168 28
--一个简单的例子,你自己看下,贴全了 SQL> desc test; 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- A NUMBER(20) B NUMBER(20)SQL> create table test2 as select * from test where 1<>1 2 /表已创建。SQL> grant insert,delete,update on test to wkc168 2 /授权成功。SQL> edi 已写入 file afiedt.buf 1* grant insert,delete,update on test2 to wkc168 SQL> /授权成功。 SQL> create or replace trigger tri_test before insert or delete or update on test for each row 2 begin 3 insert into test2 values(:new.a,:new.b); 4 end; 5 /触发器已创建SQL> conn wkc168/sys 已连接。SQL> edi 已写入 file afiedt.buf 1* insert into scott.test values(168,28) SQL> /已创建 1 行。SQL> commit 2 /提交完成。SQL> select * from scott.test2; A B ---------- ---------- 168 28
一个是DATA 相当于DBA的权限。 一个OPR就是开发者 一个是CDE 就是相关环境的 表都建在DATA下 所以脚本还要建同义词, 赋权给OPR 能够使用。
CDE下是就建序列、索引、 和触发器、存储过程的。
opr 就是我们系统上线后使用的的用户。
这样建有利于数据库管理员,控制好权限,应该是安全级别高点吧。
SQL> grant execute scott.check_client to sys;
grant execute scott.check_client to sys
ORA-00990: missing or invalid privilege
SQL>
--一个简单的例子,你自己看下
SQL> desc test;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
A NUMBER(20)
B NUMBER(20)SQL> create table test2 as select * from test where 1<>1
2 /表已创建。SQL> grant insert,delete,update on test to wkc168
2 /授权成功。SQL> edi
已写入 file afiedt.buf 1* grant insert,delete,update on test2 to wkc168
SQL> /授权成功。
SQL> create or replace trigger tri_test before insert or delete or update on test for each row
2 begin
3 insert into test2 values(:new.a,:new.b);
4 end;
5 /触发器已创建SQL> edi
已写入 file afiedt.buf 1* insert into scott.test values(168,28)
SQL> /已创建 1 行。SQL> commit
2 /提交完成。SQL> select * from scott.test2; A B
---------- ----------
168 28
--一个简单的例子,你自己看下,贴全了
SQL> desc test;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
A NUMBER(20)
B NUMBER(20)SQL> create table test2 as select * from test where 1<>1
2 /表已创建。SQL> grant insert,delete,update on test to wkc168
2 /授权成功。SQL> edi
已写入 file afiedt.buf 1* grant insert,delete,update on test2 to wkc168
SQL> /授权成功。
SQL> create or replace trigger tri_test before insert or delete or update on test for each row
2 begin
3 insert into test2 values(:new.a,:new.b);
4 end;
5 /触发器已创建SQL> conn wkc168/sys
已连接。SQL> edi
已写入 file afiedt.buf 1* insert into scott.test values(168,28)
SQL> /已创建 1 行。SQL> commit
2 /提交完成。SQL> select * from scott.test2; A B
---------- ----------
168 28