小弟新学写触发器,想写一个当插入一个表一条记录的时候,将某些字段更新到另外一个表,同时更新自己的Sended字段,如下:
create or replace trigger biufer_jydj_record
after insert on jydj_record
for each Row
declare
jyjl jydj_record.jyjl%TYPE;
jyrq jydj_record.jyrq%TYPE;
xcjyrq jydj_record.xcjyrq%TYPE;
ssbzcdm jydj_record.sbzcdm%TYPE;
sId jydj_record.Id%TYPE;
Begin
If(jyjl='合格') Then
Update sbjc Set yxzt='3',jyzt='5',aaa_jyrq=jyrq,nextcheck=xcjyrq Where sbzcdm=ssbzcdm;
Update jydj_record Set sended='1' Where Id=sId;
End If;
end biufer_jydj_record;
/我插入一条记录后,并没有触发,不知道为什么。
请指教。
create or replace trigger biufer_jydj_record
after insert on jydj_record
for each Row
declare
jyjl jydj_record.jyjl%TYPE;
jyrq jydj_record.jyrq%TYPE;
xcjyrq jydj_record.xcjyrq%TYPE;
ssbzcdm jydj_record.sbzcdm%TYPE;
sId jydj_record.Id%TYPE;
Begin
If(jyjl='合格') Then
Update sbjc Set yxzt='3',jyzt='5',aaa_jyrq=jyrq,nextcheck=xcjyrq Where sbzcdm=ssbzcdm;
Update jydj_record Set sended='1' Where Id=sId;
End If;
end biufer_jydj_record;
/我插入一条记录后,并没有触发,不知道为什么。
请指教。
ORA-04091 表jydj_record发生了变化,触发器/函数不能读
Update jydj_record Set sended='1' Where Id=sId; 指向这一行有错。
改成 :new.sended :='1';
报:ORA-04084:无法更改此类触发器类型的NEW值。。
把after类型改成before类型就可以了,这是ORACLE自带的一种判断机制。并不是主观想怎么写就怎么写。