试试把
update SEND1 set processflag=1 where mobileid=:new.mobileid and content=:new.content;
放到一个新的触发器中,
Create Or Replace Trigger TriggerS1
After insert on sm for each row
...
update SEND1 set processflag=1 where mobileid=:new.mobileid and content=:new.content;
放到一个新的触发器中,
Create Or Replace Trigger TriggerS1
After insert on sm for each row
...
然后你想更新SEND1表上的某字段。我是说你建两个触发器,一个在SEND1上,一个在SM上,
SEND1上的用insert into SM(dest_addr,fee_terminal_id)values(:new.mobileid,:new.servicetype);SM上的用update SEND1 set processflag=1 where mobileid=:new.mobileid and content=:new.content;
update SEND1 set :new.processflag:=1 where mobileid=:new.mobileid and content=:new.content;这样报错的
After insert on SEND1 for each row
begin
if inserting then
begin
insert into SM(dest_addr,fee_terminal_id)values(:new.mobileid,:new.servicetype);
end;
end if;
end;
=========================================================================
Create Or Replace Trigger TriggerSM
After insert on SM for each row
begin
if inserting then
begin
update SEND1 set processflag=1 where mobileid=:new.dest_addr and content=:new.content;
end;
end if;
end;这样写是一样的错误呀!!!!!!!!!!!!!!!
改为
:new.processflag:=1;
只有before insert或before update,才能对:new.xxxx进行赋值?!所以说比较好的办法还是ORARichard同学的。这里就要问楼主,到底出现的是什么错误?
After insert on SEND1 for each row
begin
if inserting then
begin
insert into SM(dest_addr,fee_terminal_id)values(:new.mobileid,:new.servicetype);
end;
end if;
end;
Create Or Replace Trigger TriggerS
before insert on SEND1 for each row
begin
if inserting then
begin
select 1 into :new.processflag=1 from dual;
end;
end if;
end;
你写的这个是两个同样TriggerS的触发吗?
begin
if :old.mobileid=:new.mobileid and :old.content=:new.content then
select 1 into :new.processflag=1 from dual;
end if;
end;
BEFORE insert on ZZ_SENDMESSAGE1 for each row
begin
if :OLD.mobileid=:new.mobileid and :OLD.content=:new.content then
begin
select 1 into :new.processflag=1 from dual;
end;
end if;
end;
/=========================================================
SQL> SHOW ERROR;
错误:TRIGGER ZZ_TRIGGER_UPDATE_SNEDMESSAGE1:LINE/COL ERROR
-------- --------------------------------------------------------------
4/36 PLS-00103: 出现符号 "="在需要下列之一时: .(,%fromindicator SQL>
步骤二:当SM表顺利得到记录后,将SEND1表中的该记录的字段processflag由原来的0置1
select 1 into :new.processflag from dual;
end;就这样应该行了
BEFORE insert on ZZ_SENDMESSAGE1 for each row
begin
select 1 into :new.processflag=1 from dual;
end;
/加上我前面写的第一个
BEFORE insert on ZZ_SENDMESSAGE1 for each row
begin
select 1 into :new.processflag=1 from dual;
end;
/==========================
这个中间不需要IF条件吗?