1

我在 schema1 中有 emp 表,在 schema2 中有 emp_fianl。

emp  
empid  ename  estatus
1      abc    incomplete
2      xyz    complete
3      ifg    incomplete
4      mno    incomplete

Emp_final
empid  ename  estatus
2      xyz    complete

当 schema1 emp 表中的状态更改为完成时,我必须创建一个触发器以在 Schema2 emp_final 表中插入数据。我在下面写了相同的触发器:

Create or replace trigger tri_emp_final  
After update on emp  
BEGIN  
IF :new.estatus='complete' then
Insert into emp_final  
(select :old.empid,:old.ename,:new.estatus from schem1.emp);  
END IF;  
END;  
/

我收到上述代码的变异错误消息。当我尝试更新 emp 表中的状态时。我是一名 java 开发人员,在 Oracle、SQL 方面没有太多经验。有人可以帮忙吗?

4

2 回答 2

0

第一件事:我们你想使用 :old 和 :new,你的触发器必须是 FOR EACH ROW。所以你需要改变:before update on emp for each row. 第二:就像 Goran Stefanović 写的那样,你不要选择插入,只需使用 :old 值。

于 2017-09-11T15:50:20.527 回答
0

利用

Create or replace trigger tri_emp_final  
After update on emp  for each row
BEGIN  
  IF :new.estatus='complete' then
    Insert into emp_final ( empid , ename , estatus)
    Values
    (:old.empid,:old.ename,:new.estatus );  
  END IF;  
END;  
/

你可以在这里找到一个工作演示

于 2017-09-11T13:14:41.077 回答