触发器:
CREATE OR REPLACE TRIGGER JJWGPS.xlzhxxb_tri after insert or update ON JJWGPS.JJWGPS_T_XLZHXXB_all
for each row
begin
if inserting then
INSERT INTO JJWGPS_T_XLBZXXB (select :new.XLBM,ZGXS,YTXS,DWXS,BXXS,JQXS,BZZLC,SXZLC,XXZLC,ZGFKSSJ,ZGFJSSJ,
WGFKSSJ,WGFJSSJ,ZGFDJG,WGFDJG,PSDJG,ZZ,YZ,CS,CX,FZCKGM,YJ,JJ,KSLCA,KSLCB,FKLC,SXPDLC,XXPDLC,SZPDLC,
XYGFKSSJ,XYGFJSSJ,BZ,SXXSSJ,XXXSSJ,XLLX ,ZGFSXXSSJ,ZGFXXXSSJ,WGFSXXSSJ, WGFXXXSSJ, XYGFSXXSSJ, XYGFXXXSSJ , DGSXXSSJ, DGXXXSSJ
from JJWGPS_T_XLBZXXB );
elsif updating then
update JJWGPS_T_XLBZXXB  set xlbm=:new.xlbm where xlbm=:old.xlbm;
end if;
end;
/线路标准表的约束条件:
ALTER TABLE JJWGPS_T_XLBZXXB ADD (
  CONSTRAINT JJWGPS_T_XLBZXXB_UN
 UNIQUE (XLBM, XLLX)ALTER TABLE JJWGPS_T_XLBZXXB ADD (
  CONSTRAINT JJWGPS_T_XLBZXXB_FK 
 FOREIGN KEY (XLBM) 
 REFERENCES JJWGPS_T_XLZHXXB_ALL (XLBM)
    ON DELETE CASCADE);在JJWGPS_T_XLZHXXB_all中增加一条记录时候报错,
ORA-00001: 违反唯一约束条件(JJWGPS.JJWGPS_T_XLBZXXB_UN)
ORA-06512: 在JJWGPS.XLZHXXB_TRI", line 3
ORA-04088: 触发器JJWGPS.XLZHXXB_TRI'执行过程中出错
我在XLZHXXB里面新增的XLBM是唯一的,与表里的数据不重复,为什么还会报错呢??

解决方案 »

  1.   

    表JJWGPS_T_XLBZXXB中xllx字段值有重复
      

  2.   

    嗯。。那是个线路类型,就是常规线,世博线等等,是有重复的啊,这个不能重复吗?
    我在XLBZXXB里面的唯一约束是线路编码加上线路类型啊
    应该写ADD (
      CONSTRAINT JJWGPS_T_XLBZXXB_UN
     UNIQUE (XLBM||XLLX)
      

  3.   


    --你为此两个属性列XLBM, XLLX添加是唯一约束,也就是说,在你添加的数据中,
    --此两列的数据是不能重复的,他们必须是唯一值
    ALTER TABLE JJWGPS_T_XLBZXXB 
    ADD CONSTRAINT JJWGPS_T_XLBZXXB_UN
    UNIQUE (XLBM, XLLX)
      

  4.   


    你使用insert into select 一次使用同一个:new.xlbm插入多行,既然xlbm重复了,xllx再重复
    则违反组合约束JJWGPS_T_XLBZXXB_UN
      

  5.   

    我的XIBM没重复啊。在XLZHXXB里面就是唯一的啊,