我有一个表,结构如下:
t1
f1 varchar2(20) pk,
f2 varchar2(20),
f3 varchar2(20),
f4 varchar2(20),
f5 varchar2(20),
f6 varchar2(20),
f7 varchar2(20)我想对t1做一个触发器:
CREATE OR REPLACE TRIGGER t1_tri
after INSERT OR UPDATE
ON t1 FOR EACH ROW
BEGIN tttt(:NEW.f1);
END;
tttt如下所示:
procedure tttt(p_val in varchar2)
is
begin
insert into t2(f1,f2,f3,f4,f5,f6,f7)
select f1,f2,f3,f4,f5,f6,f7
from t1
where f1=p_val;
end;当对t1进行update时,报错:
表t1发生变化,触发器/函数不能读取它。
如何解决啊?多谢高手指点!
t1
f1 varchar2(20) pk,
f2 varchar2(20),
f3 varchar2(20),
f4 varchar2(20),
f5 varchar2(20),
f6 varchar2(20),
f7 varchar2(20)我想对t1做一个触发器:
CREATE OR REPLACE TRIGGER t1_tri
after INSERT OR UPDATE
ON t1 FOR EACH ROW
BEGIN tttt(:NEW.f1);
END;
tttt如下所示:
procedure tttt(p_val in varchar2)
is
begin
insert into t2(f1,f2,f3,f4,f5,f6,f7)
select f1,f2,f3,f4,f5,f6,f7
from t1
where f1=p_val;
end;当对t1进行update时,报错:
表t1发生变化,触发器/函数不能读取它。
如何解决啊?多谢高手指点!
直接在触发器代码中插入即可。其次,如下代码有问题:insert into t2(f1,f2,f3,f4,f5,f6,f7)
select f1,f2,f3,f4,f5,f6,f7
from t1
where f1=p_val;
先执行insert, f1到f7变量没定义
select语句没有into子句,不允许。
是如何实现,能说得详细点吗?多谢!