我的一个例子create table a1 (
id number(8),
compname varchar2(20),
compcode varchar2(50),
chapter varchar2(50),
compnumber number(8),
dealdate date
);create table a2 (
id number(8),
compname varchar2(20),
compcode varchar2(50),
chapter varchar2(50),
compnumber number(8),
dealdate date
);
CREATE OR REPLACE TRIGGER tr_bf_test
BEFORE INSERT OR UPDATE OR DELETE OF ID ON a1
FOR EACH ROW
BEGIN
IF INSERTING THEN
INSERT INTO a2
VALUES(:new.id,:new.compname,:new.compcode,:new.chapter,:new.compnumber,:new.dealdate);
ELSIF UPDATING THEN
UPDATE a2 SET id=:new.ID,
compname=:new.compname,
compcode=:new.compcode,
chapter=:new.chapter,
compnumber=:new.compnumber,
dealdate=:new.dealdate
WHERE ID = :old.ID;
ELSE
DELETE FROM a2
WHERE ID = :old.ID;
END IF;
END tr_bf_TTRIG;
/
id number(8),
compname varchar2(20),
compcode varchar2(50),
chapter varchar2(50),
compnumber number(8),
dealdate date
);create table a2 (
id number(8),
compname varchar2(20),
compcode varchar2(50),
chapter varchar2(50),
compnumber number(8),
dealdate date
);
CREATE OR REPLACE TRIGGER tr_bf_test
BEFORE INSERT OR UPDATE OR DELETE OF ID ON a1
FOR EACH ROW
BEGIN
IF INSERTING THEN
INSERT INTO a2
VALUES(:new.id,:new.compname,:new.compcode,:new.chapter,:new.compnumber,:new.dealdate);
ELSIF UPDATING THEN
UPDATE a2 SET id=:new.ID,
compname=:new.compname,
compcode=:new.compcode,
chapter=:new.chapter,
compnumber=:new.compnumber,
dealdate=:new.dealdate
WHERE ID = :old.ID;
ELSE
DELETE FROM a2
WHERE ID = :old.ID;
END IF;
END tr_bf_TTRIG;
/
删除,重新创建吧,
drop trigger triggername;
create trigger triggername
............show errors trigger triggername;
具体问题具体分析
所以上面的大侠建议用pl/sql developer是有道理的,这个工具可以在运行期调试触发器等。