改成 create or replace trigger single_trig before update or delete or insert on single_test for each row begin delete from single_test_bak where id ='2222';end;都出错
create or replace trigger single_trig before update or delete or insert on single_test for each row begin if inserting then null; elsif deleting then delete from single_test_bak where id = :old.id; else null; end if;//少了一个分号end;
delete from single_test_bak where id = :old.id;这句话根本没意义
为什么?那我该怎么改? 我只想要做个备用表,而且改称这样还出错 delete from single_test_bak where id ='2222';
sorry,前面没看清你的题目。那句是有意义的。SQL817> SELECT * FROM TB;PJ A B C ---- ---- ---- ---- PJ1 a1 b1 c1 PJ1 a2 b2 c2 PJ1 a3 b3 c3已用时间: 00: 00: 00.21 SQL817> SELECT * FROM TBBAK;PJ A B C ---- ---- ---- ---- PJ1 a1 b1 c1 PJ1 a2 b2 c2 PJ1 a3 b3 c3已用时间: 00: 00: 00.20 SQL817> create or replace trigger tri before insert or update or delete on tb for each row 2 begin 3 if deleting then 4 delete from tbbak where a=:old.a; 5 end if; 6 end tri; 7 /触发器已创建已用时间: 00: 00: 00.60 SQL817> DELETE TB WHERE A='a3';已删除 1 行。已用时间: 00: 00: 00.10 SQL817> select * from tb;PJ A B C ---- ---- ---- ---- PJ1 a1 b1 c1 PJ1 a2 b2 c2已用时间: 00: 00: 00.10 SQL817> select * from tbbak;PJ A B C ---- ---- ---- ---- PJ1 a1 b1 c1 PJ1 a2 b2 c2已用时间: 00: 00: 00.20 SQL817> 你重新创建一次触发器,再执行delete,把详细的错误信息贴上来。 是不是single_test或single_test_bak上还有其它触发器?
创建触发器后, 用show error 查看错误信息
drop trigger LINE_CHANGE_MA_t;create or replace trigger LINE_CHANGE_MA_t before insert on gsmram.LINE_CHANGE_MA for each row begin SELECT gsmram.LINE_CHANGE_MA_s.NEXTVAL INTO :NEW.line_Code from dual; end; 依照以上做法可以再试试!
create or replace trigger single_trig
before update or delete or insert on single_test
for each row
begin
delete from single_test_bak where id ='2222';end;都出错
before update or delete or insert on single_test
for each row
begin
if inserting then
null;
elsif deleting then
delete from single_test_bak where id = :old.id;
else
null;
end if;//少了一个分号end;
delete from single_test_bak where id ='2222';
---- ---- ---- ----
PJ1 a1 b1 c1
PJ1 a2 b2 c2
PJ1 a3 b3 c3已用时间: 00: 00: 00.21
SQL817> SELECT * FROM TBBAK;PJ A B C
---- ---- ---- ----
PJ1 a1 b1 c1
PJ1 a2 b2 c2
PJ1 a3 b3 c3已用时间: 00: 00: 00.20
SQL817> create or replace trigger tri before insert or update or delete on tb for each row
2 begin
3 if deleting then
4 delete from tbbak where a=:old.a;
5 end if;
6 end tri;
7 /触发器已创建已用时间: 00: 00: 00.60
SQL817> DELETE TB WHERE A='a3';已删除 1 行。已用时间: 00: 00: 00.10
SQL817> select * from tb;PJ A B C
---- ---- ---- ----
PJ1 a1 b1 c1
PJ1 a2 b2 c2已用时间: 00: 00: 00.10
SQL817> select * from tbbak;PJ A B C
---- ---- ---- ----
PJ1 a1 b1 c1
PJ1 a2 b2 c2已用时间: 00: 00: 00.20
SQL817> 你重新创建一次触发器,再执行delete,把详细的错误信息贴上来。
是不是single_test或single_test_bak上还有其它触发器?
before insert on gsmram.LINE_CHANGE_MA
for each row
begin
SELECT gsmram.LINE_CHANGE_MA_s.NEXTVAL INTO :NEW.line_Code from dual;
end;
依照以上做法可以再试试!