我的触发器create or replace trigger document_trigger
before INSERT or delete or update ON DOCUMENT
FOR EACH ROW
BEGIN
IF INSERTING THEN
INSERT INTO syncres (syncresid,RESTYPE,REFERRESOURCEID) values (EXAMCERT_SEQ.NEXTVAL,:new.resourcetypeid,:new.docid);
ELSIF DELETING THEN
DELETE FROM syncres s WHERE s.referresourceid=:OLD.docid and s.restype = :old.resourcetypeid;
END IF;
END;
DOCUMENT(docid,resourcetypeid) 是一张表,现在我要做的是 此表新插入一条数据的同时,也向synres(id,docidresourcetypeid,)插入这条数据
但是,问题出现在
insert into document(1,345) 后 synres 有两条 这个数据。结果如(1,1,345) (2,1,345)
高手帮忙
before INSERT or delete or update ON DOCUMENT
FOR EACH ROW
BEGIN
IF INSERTING THEN
INSERT INTO syncres (syncresid,RESTYPE,REFERRESOURCEID) values (EXAMCERT_SEQ.NEXTVAL,:new.resourcetypeid,:new.docid);
ELSIF DELETING THEN
DELETE FROM syncres s WHERE s.referresourceid=:OLD.docid and s.restype = :old.resourcetypeid;
END IF;
END;
DOCUMENT(docid,resourcetypeid) 是一张表,现在我要做的是 此表新插入一条数据的同时,也向synres(id,docidresourcetypeid,)插入这条数据
但是,问题出现在
insert into document(1,345) 后 synres 有两条 这个数据。结果如(1,1,345) (2,1,345)
高手帮忙
before INSERT or delete or update ON DOCUMENT
FOR EACH ROW
BEGIN
IF INSERTING THEN
INSERT INTO syncres(syncresid,RESTYPE,REFERRESOURCEID) values(ABCD_SEQ.NEXTVAL,:new.resourcetypeid,:new.docid);
ELSIF DELETING THEN
DELETE FROM syncres s WHERE s.referresourceid=:OLD.docid and s.restype = :old.resourcetypeid;
END IF;
--COMMIT;--触发器中不能够有commit
END document_trigger;
经过测试没有问题。
this has *always* been true - complex logic in triggers is a scary scary thing (I don't are what database you are using - it is scary).