请教下,触发器中的
select count(*) into n from AA.BB
其中AA表示什么,是不是用户名,这个用户名与当前登录用户之间需满足什么关系?
例子是下面一段代码,我试了下,去掉AA.在本用户下创建一个BB表好像没有什么问题,但是如果在AA用户下建立一个BB表,这个触发器怎么感觉有点问题。
----------------------------------------create or replace trigger trig_cb_dklsysqb_gxczjlb
after insert or update or delete on cb_dklslysqb
for each row
declare
-- local variables here
nMaxbsm number(1);
begin
if inserting or updating then
begin
--删除老记录
delete from JSYDSPLS.GXCZJLB where trim(lybh) = trim(:new.bi_code) and xmlx = 5;
--新增记录
begin
select max(bsm) into nMaxbsm from JSYDSPLS.GXCZJLB;
exception
when no_data_found then
nMaxbsm := 0;
end;
insert into JSYDSPLS.GXCZJLB(bsm,LYBH,XMLX,GXSJ,SXRKZT,TXRKZT,CZLX,chbh,gbbs) values(nMaxbsm+1,:new.bi_code,5,sysdate,0,0,1,:new.chbh,0);
end;
end if;
if deleting then
--删除老记录
delete from JSYDSPLS.GXCZJLB where trim(lybh) = trim(:old.bi_code) and xmlx = 5;
--新增记录
begin
select max(bsm) into nMaxbsm from JSYDSPLS.GXCZJLB;
exception
when no_data_found then
nMaxbsm := 0;
end;
insert into JSYDSPLS.GXCZJLB(bsm,LYBH,XMLX,GXSJ,SXRKZT,TXRKZT,CZLX,chbh,gbbs) values(nMaxbsm+1,:old.bi_code,5,sysdate,0,0,0,:old.chbh,0);
end if; end trig_cb_dklsysqb_gxczjlb;
select count(*) into n from AA.BB
其中AA表示什么,是不是用户名,这个用户名与当前登录用户之间需满足什么关系?
例子是下面一段代码,我试了下,去掉AA.在本用户下创建一个BB表好像没有什么问题,但是如果在AA用户下建立一个BB表,这个触发器怎么感觉有点问题。
----------------------------------------create or replace trigger trig_cb_dklsysqb_gxczjlb
after insert or update or delete on cb_dklslysqb
for each row
declare
-- local variables here
nMaxbsm number(1);
begin
if inserting or updating then
begin
--删除老记录
delete from JSYDSPLS.GXCZJLB where trim(lybh) = trim(:new.bi_code) and xmlx = 5;
--新增记录
begin
select max(bsm) into nMaxbsm from JSYDSPLS.GXCZJLB;
exception
when no_data_found then
nMaxbsm := 0;
end;
insert into JSYDSPLS.GXCZJLB(bsm,LYBH,XMLX,GXSJ,SXRKZT,TXRKZT,CZLX,chbh,gbbs) values(nMaxbsm+1,:new.bi_code,5,sysdate,0,0,1,:new.chbh,0);
end;
end if;
if deleting then
--删除老记录
delete from JSYDSPLS.GXCZJLB where trim(lybh) = trim(:old.bi_code) and xmlx = 5;
--新增记录
begin
select max(bsm) into nMaxbsm from JSYDSPLS.GXCZJLB;
exception
when no_data_found then
nMaxbsm := 0;
end;
insert into JSYDSPLS.GXCZJLB(bsm,LYBH,XMLX,GXSJ,SXRKZT,TXRKZT,CZLX,chbh,gbbs) values(nMaxbsm+1,:old.bi_code,5,sysdate,0,0,0,:old.chbh,0);
end if; end trig_cb_dklsysqb_gxczjlb;
解决方案 »
- 问一个SQL里UNION ALL相加的问题
- 向ORACLE中上传文件create directory总是出错
- 如何查看oracle数据库登陆用户的ip地址
- 如何结束数据库的后台进程?
- 在学习ORACLE中遇到的问题,期待解决。。。
- sql优化的问题,
- 请问怎样在oracle数据表中创建自增列---急
- 一个简单的问题,我想知道究竟存在什么表和多少个表,SQL语句怎么写啊。
- 送分!帮个忙,我要在oracle里建个表,book(id,name,price),但是要id是自动增长!
- 求助!!同样的语句为啥结果不一样???
- 逗号分隔的问题、、、
- 配置Linux的oracle RAC时,每个结点的eth0网卡通讯问题
如用aa用户登录,授权给scott用户
grant delete on bb to scott;
那么,用scott用户就可以删除aa用户的bb表了
AA.BB表示AA用户下的BB表。这个用户名与当前登录用户之间需满足什么关系?
当前用户必须对AA.BB表有必要的权限(增删改等等)。你的代码里都是对JSYDSPLS.GXCZJLB表的操作,所以你本用户对JSYDSPLS.GXCZJLB表没权限的话,就不会有触发了
begin
select max(bsm) into nMaxbsm from JSYDSPLS.GXCZJLB;
exception
when no_data_found then
nMaxbsm := 0;
end; 这块代码好像有问题