用物化视图吧。你都没的主键,有主键就很简单了。 if inseting.. if updating.. if deleting..
create or replace trigger myTrigger after insert or update or delete on emp for each row begin delete from emp2; insert into emp2 as select * from emp; end;
额...必须用triger...客户的要求...
呵呵,偷懒!改进吓 [ID]为emp的主键create or replace trigger myTrigger before insert or update or delete on emp for each row begin if inserting then insert into emp2 as select * from emp where id=:new.id; elsif updating then delete from emp2 where select * from emp where id=:new.id; insert into emp2 as select * from emp where id=:new.id; else delete from emp2 where select * from emp where id=:old.id; end if;
create or replace trigger myTrigger before insert or update or delete on emp for each row begin if inserting then insert into emp2 as select * from emp where id=:new.id; else if updating then delete from emp2 where select * from emp where id=:new.id; insert into emp2 as select * from emp where id=:new.id; else delete from emp2 where select * from emp where id=:old.id; end if; end
呵呵~~我用update写了~~triger是挂在emp表上的~~ 帮我看看这样写ok不?~create or replace trigger NLTrigger before insert or update or delete for each row begin UPDATE emp2 SET CO=:NEW.CO, DtLvDp=:NEW.DtLvDp, DtCyc=:NEW.DtCyc, DlvDat=:NEW.DlvDat, PmCen=:NEW.PmCen, CnsmMtsNo=:NEW.CnsmMtsNo, CnsmNtwgt=:NEW.CnsmNtwgt, ROne=:NEW.ROne, RTwo=:NEW.RTwo, XtOutMtNoOne=:NEW.XtOutMtNoOne, XtOutMtNoTwo=:NEW.XtOutMtNoTwo, ShPrOne=:NEW.ShPrOne, ShPrTwo=:NEW.ShPrTwo, MtzStk=:NEW.MtzStk, TxEmp=:NEW.TxEmp, TxDat=:NEW.TxDat, TxTm=:NEW.TxTm WHERE CO=:OLD.CO, DtLvDp=:OLD.DtLvDp, DtCyc=:OLD.DtCyc, DlvDat=:OLD.DlvDat, PmCen=:OLD.PmCen, CnsmMtsNo=:OLD.CnsmMtsNo, CnsmNtwgt=:OLD.CnsmNtwgt, ROne=:OLD.ROne, RTwo=:OLD.RTwo, XtOutMtNoOne=:OLD.XtOutMtNoOne, XtOutMtNoTwo=:OLD.XtOutMtNoTwo, ShPrOne=:OLD.ShPrOne, ShPrTwo=:OLD.ShPrTwo, MtzStk=:OLD.MtzStk, TxEmp=:OLD.TxEmp, TxDat=:OLD.TxDat, TxTm=:OLD.TxTm end;
肯定不行呀 第一:删除操作还会有:new这个虚表,你怎么通过更新删除一张表类,我期待你的想法? 第二:你没有写操作对象,呵呵(before insert or update or delete on emp)-_-
第一:删除操作还会有:new这个虚表,你怎么通过更新删除一张表类,我期待你的想法? 米看懂撒意思...还有哦,上面的triger会报错...我加上了before insert or update or delete on emp, 这句也会报错...郁闷...
第一:删除操作还会有:new这个虚表,你怎么通过更新删除一张表类,我期待你的想法? 米看懂撒意思...还有哦,上面的triger会报错...我加上了before insert or update or delete on emp, 这句也会报错...郁闷...
第一:删除操作还会有:new这个虚表,你怎么通过更新删除一张表类,我期待你的想法? 米看懂撒意思...还有哦,上面的triger会报错...我加上了before insert or update or delete on emp, 这句也会报错...郁闷...
明白拉.呵呵,就是说对于状态插入,更新,删除,进行判断,然后进行操作.create or replace trigger NLTrigger before insert or update or delete on emp for each row begin if insert then insert into emp2 values (:NEW.CO,:NEW.DtLvDp,:NEW.DtCyc,:NEW.DlvDat,:NEW.PmCen,:NEW.CnsmMtsNo, :NEW.CnsmNtwgt,:NEW.ROne,:NEW.RTwo,:NEW.XtOutMtNoOne,:NEW.XtOutMtNoTwo,:NEW.ShPrOne,:NEW.ShPrTwo,:NEW.MtzStk, :NEW.TxEmp,:NEW.TxDat,:NEW.TxTm); else if update then UPDATE emp2 SET CO=:NEW.CO, DtLvDp=:NEW.DtLvDp, DtCyc=:NEW.DtCyc, DlvDat=:NEW.DlvDat, PmCen=:NEW.PmCen, CnsmMtsNo=:NEW.CnsmMtsNo, CnsmNtwgt=:NEW.CnsmNtwgt, ROne=:NEW.ROne, RTwo=:NEW.RTwo, XtOutMtNoOne=:NEW.XtOutMtNoOne, XtOutMtNoTwo=:NEW.XtOutMtNoTwo, ShPrOne=:NEW.ShPrOne, ShPrTwo=:NEW.ShPrTwo, MtzStk=:NEW.MtzStk, TxEmp=:NEW.TxEmp, TxDat=:NEW.TxDat, TxTm=:NEW.TxTm WHERE CO=:OLD.CO AND DtLvDp=:OLD.DtLvDp AND DtCyc=:OLD.DtCyc AND DlvDat=:OLD.DlvDat AND PmCen=:OLD.PmCen AND CnsmMtsNo=:OLD.CnsmMtsNo AND CnsmNtwgt=:OLD.CnsmNtwgt AND ROne=:OLD.ROne AND RTwo=:OLD.RTwo AND XtOutMtNoOne=:OLD.XtOutMtNoOne AND XtOutMtNoTwo=:OLD.XtOutMtNoTwo AND ShPrOne=:OLD.ShPrOne AND ShPrTwo=:OLD.ShPrTwo AND MtzStk=:OLD.MtzStk AND TxEmp=:OLD.TxEmp AND TxDat=:OLD.TxDat AND TxTm=:OLD.TxTm; else delete from emp2 where select * from emp where CO=:OLD.CO AND DtLvDp=:OLD.DtLvDp AND DtCyc=:OLD.DtCyc AND DlvDat=:OLD.DlvDat AND PmCen=:OLD.PmCen AND CnsmMtsNo=:OLD.CnsmMtsNo AND CnsmNtwgt=:OLD.CnsmNtwgt AND ROne=:OLD.ROne AND RTwo=:OLD.RTwo AND XtOutMtNoOne=:OLD.XtOutMtNoOne AND XtOutMtNoTwo=:OLD.XtOutMtNoTwo AND ShPrOne=:OLD.ShPrOne AND ShPrTwo=:OLD.ShPrTwo AND MtzStk=:OLD.MtzStk AND TxEmp=:OLD.TxEmp AND TxDat=:OLD.TxDat AND TxTm=:OLD.TxTm; end if; end NLTrigger;这样对么?可是我在command的时候,还是有错误.汗....2/4 PLS-00103: 出现符号 "INSERT"在需要下列之一时: ( - + case mod new not null <an identifier> <a double-quoted delimited-identifier> <a bind variable> avg count current exists max min prior sql stddev sum variance execute forall merge time timestamp interval date <a string literal with character set specification> <a number> <a single-quoted SQL string> pipe <an alternatively-quoted string literal with character set specification> <an alternatively-quoted SQL string> 符 6/10 PLS-00103: 出现符号 "UPDATE"在需要下列之一时: ( - + case mod new not null <an identifier> <a double-quoted delimited-identifier> <a bind variable> avg count current exists max min prior sql stddev sum variance execute forall merge time timestamp interval date <a string literal with character set specification> <a number> <a single-quoted SQL string> pipe <an alternatively-quoted string literal with character set specification> <an alternatively-quoted SQL string> 符 44/35 PLS-00103: 出现符号 "SELECT"在需要下列之一时: ( - + case mod new not null <an identifier> <a double-quoted delimited-identifier> <a bind variable> avg count current exists max min prior sql stddev sum variance execute forall merge time timestamp interval date <a string literal with character set specification> <a number> <a single-quoted SQL string> pipe <an alternatively-quoted string literal with character set specification> <an alternatively-quoted SQL string> 64/5 PLS-00103: 出现符号 "NLTRIGGER"在需要下列之一时: if
.....trigger语法: if UPDATING then ...... elsif INSERTING then ...... else ...... end if;"delete from emp2 where select * from emp where ....;" 这是delete语句语法? delete from emp2 where CO=:OLD.CO AND DtLvDp=:OLD.DtLvDp AND DtCyc=:OLD.DtCyc AND DlvDat=:OLD.DlvDat AND PmCen=:OLD.PmCen AND CnsmMtsNo=:OLD.CnsmMtsNo AND CnsmNtwgt=:OLD.CnsmNtwgt AND ROne=:OLD.ROne AND RTwo=:OLD.RTwo AND XtOutMtNoOne=:OLD.XtOutMtNoOne AND XtOutMtNoTwo=:OLD.XtOutMtNoTwo AND ShPrOne=:OLD.ShPrOne AND ShPrTwo=:OLD.ShPrTwo AND MtzStk=:OLD.MtzStk AND TxEmp=:OLD.TxEmp AND TxDat=:OLD.TxDat AND TxTm=:OLD.TxTm;
update改成updating insert改成inserting
上面那个太多栏位了,我建了个简单的表,emp和emp2. create table emp(id number(3),name varchar2(30),age number(5)); create table emp2(id number(3),name varchar2(30),age number(5)); create or replace trigger myTrigger before insert or update or delete on emp for each row begin if inserting then insert into emp2 values (:NEW.id,:NEW.name,:NEW.age); else if updating then update emp2 set(id=:NEW.id,name=:NEW.name,age=:NEW.age) where id=:old.id and name = :old.name and age=:old.age; else delete from emp2 where id=:old.id and name = :old.name and age=:old.age; end if; end;这个还是有错...
create or replace trigger myTrigger before insert or update or delete on emp for each row begin if inserting then insert into emp2 values (:NEW.id,:NEW.name,:NEW.age); elsif updating then update emp2 set(id=:NEW.id,name=:NEW.name,age=:NEW.age) where id=:old.id and name = :old.name and age=:old.age; else delete from emp2 where id=:old.id and name = :old.name and age=:old.age; end if; end;5/21 PL/SQL: ORA-00907: 缺失右括号 5/3 PL/SQL: SQL Statement ignored
是elsif... 即是insert/update/delete中的哪一个触发了触发器? 可以在触发器中使用inserting / updating / deleting 条件谓词,作判断: begin if inserting then ----- elsif updating then ----- elsif deleting then ------ end if; end;
create or replace trigger myTrigger before insert or update or delete on emp for each row begin if inserting then insert into emp2 values (:NEW.id,:NEW.name,:NEW.age); elsif updating then update emp2 set(id=:NEW.id,name=:NEW.name,age=:NEW.age)--这里出错了,去掉() ------update emp2 set id=:NEW.id,name=:NEW.name,age=:NEW.age where id=:old.id and name = :old.name and age=:old.age; else delete from emp2 where id=:old.id and name = :old.name and age=:old.age; end if; end; 还不行我就无语言了
create or replace trigger myTrigger before insert or update or delete on emp for each row begin if inserting then insert into emp2 values (:NEW.id,:NEW.name,:NEW.age); elsif updating then --你的错误在这里 update emp2 set(id=:NEW.id,name=:NEW.name,age=:NEW.age) where id=:old.id and name = :old.name and age=:old.age; else delete from emp2 where id=:old.id and name = :old.name and age=:old.age; end if; end;
我把我写的贴上来 create or replace trigger mytrigger before update or insert or delete on emp for each row begin if inserting then insert into emp2 values(:new.empno,:new.ename,:new.job,:new.mgr,:new.hiredate,:new.sal,:new.comm,:new.deptno); elsif updating then update emp2 t set t.empno=:new.empno,t.ename=:new.ename, t.job=:new.job,t.mgr=:new.mgr,t.hiredate=:new.hiredate,t.sal=:new.sal,t.comm=:new.sal,t.deptno=:new.deptno where t.empno=:old.empno; elsif deleting then delete from emp2 t where t.empno=:old.empno; end if; end;
疯了...终于知道错误在那里了. update那里的set不用加()..... 这样就ok了...create or replace trigger myTrigger before insert or update or delete on emp for each row begin if inserting then insert into emp2 values (:NEW.id,:NEW.name,:NEW.age); elsif updating then update emp2 set id=:NEW.id,name=:NEW.name,age=:NEW.age where id=:old.id and name = :old.name and age=:old.age; else delete from emp2 where id=:old.id and name = :old.name and age=:old.age; end if; end;
insert的时候,同样INSERT一条到表2去
update后,同样update表2
delete一样
当第一张表更新时,当作:new条件,将第二张表的资料:old当做where条件,对第二张表进行update.
具体怎么写begin后面的还米想好....痛苦....
if inseting..
if updating..
if deleting..
create or replace trigger myTrigger
after insert or update or delete on emp
for each row
begin
delete from emp2;
insert into emp2 as select * from emp;
end;
[ID]为emp的主键create or replace trigger myTrigger
before insert or update or delete on emp
for each row
begin
if inserting then
insert into emp2 as select * from emp where id=:new.id;
elsif updating then
delete from emp2 where select * from emp where id=:new.id;
insert into emp2 as select * from emp where id=:new.id;
else
delete from emp2 where select * from emp where id=:old.id;
end if;
create or replace trigger myTrigger
before insert or update or delete on emp
for each row
begin
if inserting then
insert into emp2 as select * from emp where id=:new.id;
else if updating then
delete from emp2 where select * from emp where id=:new.id;
insert into emp2 as select * from emp where id=:new.id;
else
delete from emp2 where select * from emp where id=:old.id;
end if;
end
帮我看看这样写ok不?~create or replace trigger NLTrigger
before insert or update or delete
for each row
begin
UPDATE emp2
SET CO=:NEW.CO,
DtLvDp=:NEW.DtLvDp,
DtCyc=:NEW.DtCyc,
DlvDat=:NEW.DlvDat,
PmCen=:NEW.PmCen,
CnsmMtsNo=:NEW.CnsmMtsNo,
CnsmNtwgt=:NEW.CnsmNtwgt,
ROne=:NEW.ROne,
RTwo=:NEW.RTwo,
XtOutMtNoOne=:NEW.XtOutMtNoOne,
XtOutMtNoTwo=:NEW.XtOutMtNoTwo,
ShPrOne=:NEW.ShPrOne,
ShPrTwo=:NEW.ShPrTwo,
MtzStk=:NEW.MtzStk,
TxEmp=:NEW.TxEmp,
TxDat=:NEW.TxDat,
TxTm=:NEW.TxTm
WHERE
CO=:OLD.CO,
DtLvDp=:OLD.DtLvDp,
DtCyc=:OLD.DtCyc,
DlvDat=:OLD.DlvDat,
PmCen=:OLD.PmCen,
CnsmMtsNo=:OLD.CnsmMtsNo,
CnsmNtwgt=:OLD.CnsmNtwgt,
ROne=:OLD.ROne,
RTwo=:OLD.RTwo,
XtOutMtNoOne=:OLD.XtOutMtNoOne,
XtOutMtNoTwo=:OLD.XtOutMtNoTwo,
ShPrOne=:OLD.ShPrOne,
ShPrTwo=:OLD.ShPrTwo,
MtzStk=:OLD.MtzStk,
TxEmp=:OLD.TxEmp,
TxDat=:OLD.TxDat,
TxTm=:OLD.TxTm
end;
第一:删除操作还会有:new这个虚表,你怎么通过更新删除一张表类,我期待你的想法?
第二:你没有写操作对象,呵呵(before insert or update or delete on emp)-_-
第一:删除操作还会有:new这个虚表,你怎么通过更新删除一张表类,我期待你的想法?
米看懂撒意思...还有哦,上面的triger会报错...我加上了before insert or update or delete on emp,
这句也会报错...郁闷...
第一:删除操作还会有:new这个虚表,你怎么通过更新删除一张表类,我期待你的想法?
米看懂撒意思...还有哦,上面的triger会报错...我加上了before insert or update or delete on emp,
这句也会报错...郁闷...
第一:删除操作还会有:new这个虚表,你怎么通过更新删除一张表类,我期待你的想法?
米看懂撒意思...还有哦,上面的triger会报错...我加上了before insert or update or delete on emp,
这句也会报错...郁闷...
0001,'xiaoluo',20;我引用他的ID时候你是不是用:old.id?
现在我更新他。
0001,'xiaohei',23;我引用他的ID时候你是不是用:new.id?
如果是删除操作
记录都删除了你:new.id引用的是什么?
只有insert和update才可以用:old.XX和:new.XX
删除就只可以用:old.XX
before insert or update or delete on emp
for each row
begin
if insert then
insert into emp2 values (:NEW.CO,:NEW.DtLvDp,:NEW.DtCyc,:NEW.DlvDat,:NEW.PmCen,:NEW.CnsmMtsNo,
:NEW.CnsmNtwgt,:NEW.ROne,:NEW.RTwo,:NEW.XtOutMtNoOne,:NEW.XtOutMtNoTwo,:NEW.ShPrOne,:NEW.ShPrTwo,:NEW.MtzStk,
:NEW.TxEmp,:NEW.TxDat,:NEW.TxTm);
else if update then
UPDATE emp2
SET CO=:NEW.CO,
DtLvDp=:NEW.DtLvDp,
DtCyc=:NEW.DtCyc,
DlvDat=:NEW.DlvDat,
PmCen=:NEW.PmCen,
CnsmMtsNo=:NEW.CnsmMtsNo,
CnsmNtwgt=:NEW.CnsmNtwgt,
ROne=:NEW.ROne,
RTwo=:NEW.RTwo,
XtOutMtNoOne=:NEW.XtOutMtNoOne,
XtOutMtNoTwo=:NEW.XtOutMtNoTwo,
ShPrOne=:NEW.ShPrOne,
ShPrTwo=:NEW.ShPrTwo,
MtzStk=:NEW.MtzStk,
TxEmp=:NEW.TxEmp,
TxDat=:NEW.TxDat,
TxTm=:NEW.TxTm
WHERE
CO=:OLD.CO AND
DtLvDp=:OLD.DtLvDp AND
DtCyc=:OLD.DtCyc AND
DlvDat=:OLD.DlvDat AND
PmCen=:OLD.PmCen AND
CnsmMtsNo=:OLD.CnsmMtsNo AND
CnsmNtwgt=:OLD.CnsmNtwgt AND
ROne=:OLD.ROne AND
RTwo=:OLD.RTwo AND
XtOutMtNoOne=:OLD.XtOutMtNoOne AND
XtOutMtNoTwo=:OLD.XtOutMtNoTwo AND
ShPrOne=:OLD.ShPrOne AND
ShPrTwo=:OLD.ShPrTwo AND
MtzStk=:OLD.MtzStk AND
TxEmp=:OLD.TxEmp AND
TxDat=:OLD.TxDat AND
TxTm=:OLD.TxTm;
else
delete from emp2 where select * from emp where CO=:OLD.CO AND
DtLvDp=:OLD.DtLvDp AND
DtCyc=:OLD.DtCyc AND
DlvDat=:OLD.DlvDat AND
PmCen=:OLD.PmCen AND
CnsmMtsNo=:OLD.CnsmMtsNo AND
CnsmNtwgt=:OLD.CnsmNtwgt AND
ROne=:OLD.ROne AND
RTwo=:OLD.RTwo AND
XtOutMtNoOne=:OLD.XtOutMtNoOne AND
XtOutMtNoTwo=:OLD.XtOutMtNoTwo AND
ShPrOne=:OLD.ShPrOne AND
ShPrTwo=:OLD.ShPrTwo AND
MtzStk=:OLD.MtzStk AND
TxEmp=:OLD.TxEmp AND
TxDat=:OLD.TxDat AND
TxTm=:OLD.TxTm;
end if;
end NLTrigger;这样对么?可是我在command的时候,还是有错误.汗....2/4 PLS-00103: 出现符号 "INSERT"在需要下列之一时: ( - + case mod new not null <an identifier> <a double-quoted delimited-identifier> <a bind variable> avg count current exists max min prior sql stddev sum variance execute forall merge time timestamp interval date <a string literal with character set specification> <a number> <a single-quoted SQL string> pipe <an alternatively-quoted string literal with character set specification> <an alternatively-quoted SQL string> 符
6/10 PLS-00103: 出现符号 "UPDATE"在需要下列之一时: ( - + case mod new not null <an identifier> <a double-quoted delimited-identifier> <a bind variable> avg count current exists max min prior sql stddev sum variance execute forall merge time timestamp interval date <a string literal with character set specification> <a number> <a single-quoted SQL string> pipe <an alternatively-quoted string literal with character set specification> <an alternatively-quoted SQL string> 符
44/35 PLS-00103: 出现符号 "SELECT"在需要下列之一时: ( - + case mod new not null <an identifier> <a double-quoted delimited-identifier> <a bind variable> avg count current exists max min prior sql stddev sum variance execute forall merge time timestamp interval date <a string literal with character set specification> <a number> <a single-quoted SQL string> pipe <an alternatively-quoted string literal with character set specification> <an alternatively-quoted SQL string>
64/5 PLS-00103: 出现符号 "NLTRIGGER"在需要下列之一时: if
if UPDATING then
......
elsif INSERTING then
......
else
......
end if;"delete from emp2 where select * from emp where ....;"
这是delete语句语法?
delete from emp2 where CO=:OLD.CO AND
DtLvDp=:OLD.DtLvDp AND
DtCyc=:OLD.DtCyc AND
DlvDat=:OLD.DlvDat AND
PmCen=:OLD.PmCen AND
CnsmMtsNo=:OLD.CnsmMtsNo AND
CnsmNtwgt=:OLD.CnsmNtwgt AND
ROne=:OLD.ROne AND
RTwo=:OLD.RTwo AND
XtOutMtNoOne=:OLD.XtOutMtNoOne AND
XtOutMtNoTwo=:OLD.XtOutMtNoTwo AND
ShPrOne=:OLD.ShPrOne AND
ShPrTwo=:OLD.ShPrTwo AND
MtzStk=:OLD.MtzStk AND
TxEmp=:OLD.TxEmp AND
TxDat=:OLD.TxDat AND
TxTm=:OLD.TxTm;
insert改成inserting
create table emp(id number(3),name varchar2(30),age number(5));
create table emp2(id number(3),name varchar2(30),age number(5));
create or replace trigger myTrigger
before insert or update or delete on emp
for each row
begin
if inserting then
insert into emp2 values (:NEW.id,:NEW.name,:NEW.age);
else if updating then
update emp2 set(id=:NEW.id,name=:NEW.name,age=:NEW.age)
where id=:old.id and name = :old.name and age=:old.age;
else
delete from emp2 where id=:old.id and name = :old.name and age=:old.age;
end if;
end;这个还是有错...
create or replace trigger myTrigger
before insert or update or delete on emp
for each row
begin
if inserting then
insert into emp2 values (:NEW.id,:NEW.name,:NEW.age);
elsif updating then
update emp2 set(id=:NEW.id,name=:NEW.name,age=:NEW.age)
where id=:old.id and name = :old.name and age=:old.age;
else
delete from emp2 where id=:old.id and name = :old.name and age=:old.age;
end if;
end;5/21 PL/SQL: ORA-00907: 缺失右括号
5/3 PL/SQL: SQL Statement ignored
即是insert/update/delete中的哪一个触发了触发器?
可以在触发器中使用inserting / updating / deleting 条件谓词,作判断:
begin
if inserting then
-----
elsif updating then
-----
elsif deleting then
------
end if;
end;
create or replace trigger myTrigger
before insert or update or delete on emp
for each row
begin
if inserting then
insert into emp2 values (:NEW.id,:NEW.name,:NEW.age);
elsif updating then
update emp2 set(id=:NEW.id,name=:NEW.name,age=:NEW.age)--这里出错了,去掉()
------update emp2 set id=:NEW.id,name=:NEW.name,age=:NEW.age
where id=:old.id and name = :old.name and age=:old.age;
else
delete from emp2 where id=:old.id and name = :old.name and age=:old.age;
end if;
end;
还不行我就无语言了
before insert or update or delete on emp
for each row
begin
if inserting then
insert into emp2 values (:NEW.id,:NEW.name,:NEW.age);
elsif updating then --你的错误在这里
update emp2 set(id=:NEW.id,name=:NEW.name,age=:NEW.age)
where id=:old.id and name = :old.name and age=:old.age;
else
delete from emp2 where id=:old.id and name = :old.name and age=:old.age;
end if;
end;
create or replace trigger mytrigger
before update or insert or delete on emp
for each row
begin
if inserting then
insert into emp2 values(:new.empno,:new.ename,:new.job,:new.mgr,:new.hiredate,:new.sal,:new.comm,:new.deptno);
elsif updating then
update emp2 t set t.empno=:new.empno,t.ename=:new.ename,
t.job=:new.job,t.mgr=:new.mgr,t.hiredate=:new.hiredate,t.sal=:new.sal,t.comm=:new.sal,t.deptno=:new.deptno
where t.empno=:old.empno;
elsif deleting then
delete from emp2 t where t.empno=:old.empno;
end if;
end;
update那里的set不用加().....
这样就ok了...create or replace trigger myTrigger
before insert or update or delete on emp
for each row
begin
if inserting then
insert into emp2 values (:NEW.id,:NEW.name,:NEW.age);
elsif updating then
update emp2 set id=:NEW.id,name=:NEW.name,age=:NEW.age
where id=:old.id and name = :old.name and age=:old.age;
else
delete from emp2 where id=:old.id and name = :old.name and age=:old.age;
end if;
end;