永发信息网

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的权限。
全部回答
  • 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; 将出错。 可以尝试修改为, 抛出异常的方式,拒绝当前行的插入操作。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯