用 if updating then update..................... elsif inserting then insert.................. elsif deleting then .................... end if;
按照 回复人: xzou(亡狼补齿)说的方法: CREATE OR REPLACE TRIGGER kcxxkcmxline BEFORE INSERT OR UPDATE OR DELETE ON XYKRKXX FOR EACH ROW BEGIN IF inserting THEN INSERT INTO XYKKCMX(BH,YPBH,YPMC,FL,GG,SL,PFJ,PFJJE,LSJ,LSJJE,CZY) VALUES (lpad(xykkcmxbh.nextval,8,'0'),:NEW.YPBH,:NEW.YPMC,:NEW.YPFL, :NEW.GG,:NEW.RKSL,:NEW.PFJ,:NEW.PFJJE,:NEW.LSJ, :NEW.LSJJE,:NEW.CZY); ELSIF updating THEN UPDATE XYKKCMX SET SL=:NEW.RKSL WHERE ...(必须加入限制条件,根据情况你自己写吧!); END IF; END kcxxkcmxline;
如果你不加where 限制条件的话, 当Update表XYKRKXX时,表XYKKCMX中的所有SL列都会更新,对吧? 所以你必须加where 限制条件。 例如:where YPBH=:NEW.YPBH and YPMC=:NEW.YPMC and FL=:NEW.YPFL and GG=:NEW.GG and PFJ=:NEW.PFJ and PFJJE=:NEW.PFJJELSJ and LSJJE=:NEW.LSJJE and CZY=:NEW.CZY 大概就是这个意思,你自己再修正一下。
if updating then
update.....................
elsif inserting then
insert..................
elsif deleting then
....................
end if;
CREATE OR REPLACE TRIGGER kcxxkcmxline
BEFORE INSERT OR UPDATE OR DELETE ON XYKRKXX
FOR EACH ROW
BEGIN
IF inserting THEN
INSERT INTO XYKKCMX(BH,YPBH,YPMC,FL,GG,SL,PFJ,PFJJE,LSJ,LSJJE,CZY)
VALUES (lpad(xykkcmxbh.nextval,8,'0'),:NEW.YPBH,:NEW.YPMC,:NEW.YPFL,
:NEW.GG,:NEW.RKSL,:NEW.PFJ,:NEW.PFJJE,:NEW.LSJ,
:NEW.LSJJE,:NEW.CZY);
ELSIF updating THEN
UPDATE XYKKCMX
SET SL=:NEW.RKSL WHERE ...(必须加入限制条件,根据情况你自己写吧!);
END IF;
END kcxxkcmxline;
这个WHERE 怎么写?
当Update表XYKRKXX时,表XYKKCMX中的所有SL列都会更新,对吧?
所以你必须加where 限制条件。
例如:where YPBH=:NEW.YPBH and YPMC=:NEW.YPMC and
FL=:NEW.YPFL and GG=:NEW.GG and PFJ=:NEW.PFJ and
PFJJE=:NEW.PFJJELSJ and LSJJE=:NEW.LSJJE and CZY=:NEW.CZY
大概就是这个意思,你自己再修正一下。