oracle触发器跨用户问题
答案:2 悬赏:20 手机版
解决时间 2021-03-21 17:38
- 提问者网友:ミ烙印ゝ
- 2021-03-21 14:49
AB两个user,都有用户表,A用户下的表中插入一条数据触发向B用户的一个表中也执行一条插入语句,怎么写这个触发器,详细点,先谢谢啦
最佳答案
- 五星知识达人网友:神也偏爱
- 2021-03-21 16:18
create trigger ins_trig --ins_trig为触发器的名字
after insert on a.table1 --table1为用户表
for each row
begin
insert into b.table1 values(:new.f1,:new.f2,:new.f3,:new.f4,:new.f5);
end;
/
ps:该触发器是在a 用户模式下创建的,a用户必须具有insert any table的权限。
after insert on a.table1 --table1为用户表
for each row
begin
insert into b.table1 values(:new.f1,:new.f2,:new.f3,:new.f4,:new.f5);
end;
/
ps:该触发器是在a 用户模式下创建的,a用户必须具有insert any table的权限。
全部回答
- 1楼网友:迟山
- 2021-03-21 17:23
if :old.gradeid not in (select grade.gradeid from grade)
这个意思上看得懂
但是语法上不知道有没有问题
建议定义个变量 int 类型的
declare v_rowcount int;
-- 然后查询
select count(*) into v_rowcount
from grade
where grade.gradeid != :old.gradeid
-- 然后判断
if v_rowcount = 0 ...
还有另外一个问题。
after insert on class
for each row
的触发器, 不能在触发器里面。
查询/更新/删除 自己这张表。
因此
delete from class where gradeid=:old.gradeid;
将出错。
可以尝试修改为, 抛出异常的方式,拒绝当前行的插入操作。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯