0

Here is a trigger I want to create on one of my tables that should move certaint data from 3 tables to 4th table either via update or insert depending if it exists or not. Here is what I came up with so far.

CREATE or REPLACE TRIGGER UMELD_PWEL_TRIG
AFTER INSERT OR UPDATE ON USCADM.USC_UMELD
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW WHEN (NEW.PWEL_STAT = 1) 
DECLARE 
  ILOSC INT;
BEGIN
  select count(*) INTO ILOSC from USCADM.USC_PESELU where RK = :NEW.RK AND DZ = :NEW.DZ AND NR = :NEW.NR AND NRP = :NEW.NRP AND IDUSC = :NEW.IDUSC;

  if ILOSC = 1 then
    update PESEL set PESEL.IDUSC = ODPSKR.IDUSC, PESEL.RK = ODPSKR.RK, PESEL.DZ = ODPSKR.DZ, PESEL.NR = ODPSKR.NR, PESEL.NRP = ODPSKR.NRP, PESEL.DZPL = ODPSKR.DZPL, 
    PESEL.NRO = ODPSKR.NRO, PESEL.NAZWPL = ODPSKR.NAZWPL, PESEL.NAZW = ODPSKR.NAZW, PESEL.IMIE1PL = ODPSKR.IMIE1PL, PESEL.IMIE1 = ODPSKR.IMIE1, PESEL.IMIER = ODPSKR.IMIER, 
    PESEL.UR_DATAR = ODPSKR.UR_DATAR, PESEL.UR_DATAM = ODPSKR.UR_DATAM, PESEL.UR_DATAD = ODPSKR.UR_DATAD, PESEL.UR_MSC = ODPSKR.UR_MSC, PESEL.IDUR_MSC = ODPSKR.IDUR_MSC, 
    PESEL.KTUR_MSC = USCADM.fnNrStatToTeryt(ODPSKR.IDUR_MSC), PESEL.UR_KRAJ = ODPSKR.UR_KRAJ, PESEL.OJ_NAZW = ODPSKR.OJ_NAZW, PESEL.OJ_NAZWR = ODPSKR.OJ_NAZWR, 
    PESEL.OJ_IMIE1 = ODPSKR.OJ_IMIE1, PESEL.OJ_IMIER = ODPSKR.OJ_IMIER, PESEL.MA_NAZW = ODPSKR.MA_NAZW, PESEL.MA_NAZWRPL = ODPSKR.MA_NAZWRPL, PESEL.MA_NAZWR = ODPSKR.MA_NAZWR, 
    PESEL.MA_IMIE1 = ODPSKR.MA_IMIE1, PESEL.MA_IMIER = ODPSKR.MA_IMIER, PESEL.PESEL = MELD.PESEL, PESEL.A_MSC = MELD.A_MSC, PESEL.IDA_MSC = MELD.IDA_MSC,
    PESEL.KRA_MSC = USCADM.fnNrStatToTeryt(MELD.IDA_MSC), PESEL.A_MSC_KP = MELD.A_MSC_KP, PESEL.A_ULICA = MELD.A_ULICA, PESEL.A_DOM = MELD.A_DOM, PESEL.A_LOKAL = MELD.A_LOKAL,
    PESEL.A_KRAJ = MELD.A_KRAJ, PESEL.TYP_ADR = MELD.TYP_ADR, PESEL.MPESEL = MELD.MPESEL, PESEL.OPESEL = MELD.OPESEL, PESEL.M_DOW_TYP = MELD.M_DOW_TYP, PESEL.M_DOW_NR = MELD.M_DOW_NR,
    PESEL.M_DOW_WYD = MELD.M_DOW_WYD, PESEL.M_DOW_MSC = MELD.M_DOW_MSC, PESEL.IDM_DOW_MSC = MELD.IDM_DOW_MSC, PESEL.M_DOW_DATAR = MELD.M_DOW_DATAR, PESEL.M_DOW_DATAM = MELD.M_DOW_DATAM,
    PESEL.M_DOW_DATAD = MELD.M_DOW_DATAD, PESEL.M_DOW_KRAJ = MELD.M_DOW_KRAJ, PESEL.O_DOW_TYP = MELD.O_DOW_TYP, PESEL.O_DOW_NR = MELD.O_DOW_NR, PESEL.O_DOW_WYD = MELD.O_DOW_WYD, 
    PESEL.O_DOW_MSC = MELD.O_DOW_MSC, PESEL.IDO_DOW_MSC = MELD.IDO_DOW_MSC, PESEL.O_DOW_DATAR = MELD.O_DOW_DATAR, PESEL.O_DOW_DATAM = MELD.O_DOW_DATAM, PESEL.O_DOW_DATAD = MELD.O_DOW_DATAD, 
    PESEL.O_DOW_KRAJ = MELD.O_DOW_KRAJ, PESEL.PLEC = ODPSKR.PLEC, PESEL.WA_DATAR = AKT.WA_DATAR, PESEL.WA_DATAM = AKT.WA_DATAM, PESEL.WA_DATAD = AKT.WA_DATAD, PESEL.ODP_KTO = ODPSKR.IDMR_KTO,
    PESEL.ODP_KIEDY = ODPSKR.IDMR_KIEDYS, PESEL.MEL_KTO = MELD.IDMR_KTO, PESEL.MEL_KIEDY = ODPSKR.IDMR_KIEDYS, PESEL.ZD_DATAR = ODPSKR.ZD_DATAR, PESEL.ZD_DATAM = ODPSKR.ZD_DATAM,
    PESEL.ZD_DATAD = ODPSKR.ZD_DATAD, PESEL.ZD_UPR_DATAR = ODPSKR.ZD_UPR_DATAR, PESEL.ZD_UPR_DATAM = ODPSKR.ZD_UPR_DATAM, PESEL.ZD_UPR_DATAD = ODPSKR.ZD_UPR_DATAD, PESEL.ZD_N = ODPSKR.ZD_N,
    PESEL.ZD_KOD = ODPSKR.ZD_KOD, PESEL.ZD_DOK = ODPSKR.ZD_DOK, PESEL.ZD_ORG = ODPSKR.ZD_ORG, PESEL.ZD_ORG_OPIS = ODPSKR.ZD_ORG_OPIS, PESEL.ZD_MSC = ODPSKR.ZD_MSC, PESEL.IDZD_MSC = ODPSKR.IDZD_MSC,
    PESEL.AKT_KIEDY = AKT.IDMR_KIEDYS
    from USCADM.USC_UODPSKR as ODPSKR 
    join USCADM.USC_UMELD as MELD on ODPSKR.RK = MELD.RK AND ODPSKR.DZ = MELD.DZ AND ODPSKR.NR = MELD.NR AND ODPSKR.NRP = MELD.NRP AND ODPSKR.IDUSC = MELD.IDUSC
    join USCADM.USC_UAKT as AKT on ODPSKR.RK = AKT.RK AND ODPSKR.DZ = AKT.DZ AND ODPSKR.NR = AKT.NR AND ODPSKR.NRP = AKT.NRP AND ODPSKR.IDUSC = AKT.IDUSC
    join USCADM.USC_PESELU as PESEL on ODPSKR.RK = PESEL.RK AND ODPSKR.DZ = PESEL.DZ AND ODPSKR.NR = PESEL.NR AND ODPSKR.NRP = PESEL.NRP AND ODPSKR.IDUSC = PESEL.IDUSC
    WHERE ODPSKR.RK = :NEW.RK AND ODPSKR.DZ = :NEW.DZ AND ODPSKR.NR = :NEW.NR AND ODPSKR.NRP = :NEW.NRP AND ODPSKR.IDUSC = :NEW.IDUSC;
  elsif ILOSC = 0 then
    insert into USCADM.USC_PESELU (IDUSC, RK, DZ, NR, NRP, DZPL, NRO, NAZWPL, NAZW, IMIE1PL, IMIE1, IMIER, UR_DATAR, UR_DATAM, UR_DATAD, UR_MSC, IDUR_MSC, KTUR_MSC,PESEL.UR_KRAJ,
    OJ_NAZW, OJ_NAZWR, OJ_IMIE1, OJ_IMIER, MA_NAZW, MA_NAZWRPL, MA_NAZWR, MA_IMIE1, MA_IMIER, PESEL, A_MSC, IDA_MSC, KRA_MSC, A_MSC_KP, A_ULICA, A_DOM, A_LOKAL,
    A_KRAJ, TYP_ADR,MPESEL,OPESEL,M_DOW_TYP,M_DOW_NR, M_DOW_WYD, M_DOW_MSC, IDM_DOW_MSC, M_DOW_DATAR,M_DOW_DATAM, M_DOW_DATAD, M_DOW_KRAJ, O_DOW_TYP, O_DOW_NR, O_DOW_WYD,O_DOW_MSC,
    IDO_DOW_MSC,O_DOW_DATAR,O_DOW_DATAM,O_DOW_DATAD, O_DOW_KRAJ, PLEC, WA_DATAR,WA_DATAM, WA_DATAD, ODP_KTO, ODP_KIEDY, MEL_KTO, MEL_KIEDY, ZD_DATAR, ZD_DATAM, ZD_DATAD, ZD_UPR_DATAR,
    ZD_UPR_DATAM, ZD_UPR_DATAD, ZD_N,  ZD_KOD, ZD_DOK, ZD_ORG, ZD_ORG_OPIS, ZD_MSC, IDZD_MSC, AKT_KIEDY) 
    VALUES(ODPSKR.IDUSC,ODPSKR.RK,ODPSKR.DZ,ODPSKR.NR,ODPSKR.NRP,ODPSKR.DZPL,ODPSKR.NRO,ODPSKR.NAZWPL,ODPSKR.NAZW,ODPSKR.IMIE1PL,ODPSKR.IMIE1,ODPSKR.IMIER,ODPSKR.UR_DATAR,ODPSKR.UR_DATAM,
    ODPSKR.UR_DATAD, ODPSKR.UR_MSC,ODPSKR.IDUR_MSC, USCADM.fnNrStatToTeryt(ODPSKR.IDUR_MSC), ODPSKR.UR_KRAJ, ODPSKR.OJ_NAZW,ODPSKR.OJ_NAZWR, ODPSKR.OJ_IMIE1, ODPSKR.OJ_IMIER,ODPSKR.MA_NAZW,
    ODPSKR.MA_NAZWRPL,ODPSKR.MA_NAZWR,ODPSKR.MA_IMIE1,ODPSKR.MA_IMIER,MELD.PESEL,MELD.A_MSC,MELD.IDA_MSC, USCADM.fnNrStatToTeryt(MELD.IDA_MSC), MELD.A_MSC_KP, MELD.A_ULICA, MELD.A_DOM,
    MELD.A_LOKAL, MELD.A_KRAJ,MELD.TYP_ADR,MELD.MPESEL,MELD.OPESEL,MELD.M_DOW_TYP,MELD.M_DOW_NR, MELD.M_DOW_WYD,MELD.M_DOW_MSC,MELD.IDM_DOW_MSC,MELD.M_DOW_DATAR,MELD.M_DOW_DATAM,   
    MELD.M_DOW_DATAD,MELD.M_DOW_KRAJ,MELD.O_DOW_TYP,MELD.O_DOW_NR,MELD.O_DOW_WYD, MELD.O_DOW_MSC,MELD.IDO_DOW_MSC,MELD.O_DOW_DATAR,MELD.O_DOW_DATAM,MELD.O_DOW_DATAD, MELD.O_DOW_KRAJ,
    ODPSKR.PLEC,AKT.WA_DATAR,AKT.WA_DATAM,AKT.WA_DATAD,ODPSKR.IDMR_KTO, ODPSKR.IDMR_KIEDYS,MELD.IDMR_KTO,ODPSKR.IDMR_KIEDYS,ODPSKR.ZD_DATAR,ODPSKR.ZD_DATAM, ODPSKR.ZD_DATAD, ODPSKR.ZD_UPR_DATAR,
    ODPSKR.ZD_UPR_DATAM,ODPSKR.ZD_UPR_DATAD,ODPSKR.ZD_N, ODPSKR.ZD_KOD,ODPSKR.ZD_DOK,ODPSKR.ZD_ORG,ODPSKR.ZD_ORG_OPIS,ODPSKR.ZD_MSC,ODPSKR.IDZD_MSC, AKT.IDMR_KIEDYS)
    from USCADM.USC_UODPSKR as ODPSKR 
    join USCADM.USC_UMELD as MELD on ODPSKR.RK = MELD.RK AND ODPSKR.DZ = MELD.DZ AND ODPSKR.NR = MELD.NR AND ODPSKR.NRP = MELD.NRP AND ODPSKR.IDUSC = MELD.IDUSC
    join USCADM.USC_UAKT as AKT on ODPSKR.RK = AKT.RK AND ODPSKR.DZ = AKT.DZ AND ODPSKR.NR = AKT.NR AND ODPSKR.NRP = AKT.NRP AND ODPSKR.IDUSC = AKT.IDUSC
    WHERE ODPSKR.RK = :NEW.RK AND ODPSKR.DZ = :NEW.DZ AND ODPSKR.NR = :NEW.NR AND ODPSKR.NRP = :NEW.NRP AND ODPSKR.IDUSC = :NEW.IDUSC;
  end if;

END UMELD_PWEL_TRIG;

I get following errors:

Error(7,5): PL/SQL: SQL Statement ignored
Error(23,5): PL/SQL: ORA-00933: polecenie SQL niepoprawnie zakończone (not finished correctly)
Error(29,5): PL/SQL: SQL Statement ignored 
Error(41,5): PL/SQL: ORA-00933: polecenie SQL niepoprawnie zakończone (not finished correctly)
2
  • In your comment to @TonyAndrews answer you say you've fixed the syntax problems in your original code but the compile errors still exist. Please update your question with the most recent code. Thanks. Commented Mar 5, 2014 at 12:22
  • Answered the question below. Commented Mar 5, 2014 at 15:23

2 Answers 2

1

You have confused INSERT...VALUES and INSERT...SELECT syntax. Your INSERT should be:

insert into USCADM.USC_PESELU (IDUSC, RK, DZ, NR, NRP, DZPL, NRO, NAZWPL, NAZW, IMIE1PL, IMIE1, IMIER, UR_DATAR, UR_DATAM, UR_DATAD, UR_MSC, IDUR_MSC, KTUR_MSC,PESEL.UR_KRAJ,
OJ_NAZW, OJ_NAZWR, OJ_IMIE1, OJ_IMIER, MA_NAZW, MA_NAZWRPL, MA_NAZWR, MA_IMIE1, MA_IMIER, PESEL, A_MSC, IDA_MSC, KRA_MSC, A_MSC_KP, A_ULICA, A_DOM, A_LOKAL,
A_KRAJ, TYP_ADR,MPESEL,OPESEL,M_DOW_TYP,M_DOW_NR, M_DOW_WYD, M_DOW_MSC, IDM_DOW_MSC, M_DOW_DATAR,M_DOW_DATAM, M_DOW_DATAD, M_DOW_KRAJ, O_DOW_TYP, O_DOW_NR, O_DOW_WYD,O_DOW_MSC,
IDO_DOW_MSC,O_DOW_DATAR,O_DOW_DATAM,O_DOW_DATAD, O_DOW_KRAJ, PLEC, WA_DATAR,WA_DATAM, WA_DATAD, ODP_KTO, ODP_KIEDY, MEL_KTO, MEL_KIEDY, ZD_DATAR, ZD_DATAM, ZD_DATAD, ZD_UPR_DATAR,
ZD_UPR_DATAM, ZD_UPR_DATAD, ZD_N,  ZD_KOD, ZD_DOK, ZD_ORG, ZD_ORG_OPIS, ZD_MSC, IDZD_MSC, AKT_KIEDY) 
SELECT ODPSKR.IDUSC,ODPSKR.RK,ODPSKR.DZ,ODPSKR.NR,ODPSKR.NRP,ODPSKR.DZPL,ODPSKR.NRO,ODPSKR.NAZWPL,ODPSKR.NAZW,ODPSKR.IMIE1PL,ODPSKR.IMIE1,ODPSKR.IMIER,ODPSKR.UR_DATAR,ODPSKR.UR_DATAM,
ODPSKR.UR_DATAD, ODPSKR.UR_MSC,ODPSKR.IDUR_MSC, USCADM.fnNrStatToTeryt(ODPSKR.IDUR_MSC), ODPSKR.UR_KRAJ, ODPSKR.OJ_NAZW,ODPSKR.OJ_NAZWR, ODPSKR.OJ_IMIE1, ODPSKR.OJ_IMIER,ODPSKR.MA_NAZW,
ODPSKR.MA_NAZWRPL,ODPSKR.MA_NAZWR,ODPSKR.MA_IMIE1,ODPSKR.MA_IMIER,MELD.PESEL,MELD.A_MSC,MELD.IDA_MSC, USCADM.fnNrStatToTeryt(MELD.IDA_MSC), MELD.A_MSC_KP, MELD.A_ULICA, MELD.A_DOM,
MELD.A_LOKAL, MELD.A_KRAJ,MELD.TYP_ADR,MELD.MPESEL,MELD.OPESEL,MELD.M_DOW_TYP,MELD.M_DOW_NR, MELD.M_DOW_WYD,MELD.M_DOW_MSC,MELD.IDM_DOW_MSC,MELD.M_DOW_DATAR,MELD.M_DOW_DATAM,   
MELD.M_DOW_DATAD,MELD.M_DOW_KRAJ,MELD.O_DOW_TYP,MELD.O_DOW_NR,MELD.O_DOW_WYD, MELD.O_DOW_MSC,MELD.IDO_DOW_MSC,MELD.O_DOW_DATAR,MELD.O_DOW_DATAM,MELD.O_DOW_DATAD, MELD.O_DOW_KRAJ,
ODPSKR.PLEC,AKT.WA_DATAR,AKT.WA_DATAM,AKT.WA_DATAD,ODPSKR.IDMR_KTO, ODPSKR.IDMR_KIEDYS,MELD.IDMR_KTO,ODPSKR.IDMR_KIEDYS,ODPSKR.ZD_DATAR,ODPSKR.ZD_DATAM, ODPSKR.ZD_DATAD, ODPSKR.ZD_UPR_DATAR,
ODPSKR.ZD_UPR_DATAM,ODPSKR.ZD_UPR_DATAD,ODPSKR.ZD_N, ODPSKR.ZD_KOD,ODPSKR.ZD_DOK,ODPSKR.ZD_ORG,ODPSKR.ZD_ORG_OPIS,ODPSKR.ZD_MSC,ODPSKR.IDZD_MSC, AKT.IDMR_KIEDYS
from USCADM.USC_UODPSKR as ODPSKR 
join USCADM.USC_UMELD as MELD on ODPSKR.RK = MELD.RK AND ODPSKR.DZ = MELD.DZ AND ODPSKR.NR = MELD.NR AND ODPSKR.NRP = MELD.NRP AND ODPSKR.IDUSC = MELD.IDUSC
join USCADM.USC_UAKT as AKT on ODPSKR.RK = AKT.RK AND ODPSKR.DZ = AKT.DZ AND ODPSKR.NR = AKT.NR AND ODPSKR.NRP = AKT.NRP AND ODPSKR.IDUSC = AKT.IDUSC
WHERE ODPSKR.RK = :NEW.RK AND ODPSKR.DZ = :NEW.DZ AND ODPSKR.NR = :NEW.NR AND ODPSKR.NRP = :NEW.NRP AND ODPSKR.IDUSC = :NEW.IDUSC;
Sign up to request clarification or add additional context in comments.

1 Comment

Your right fixed it however same errors still exist.
0
CREATE OR replace TRIGGER umeld_pwel_trig
  BEFORE INSERT OR UPDATE ON uscadm.usc_umeld
  REFERENCING NEW AS NEW OLD AS OLD
  FOR EACH ROW
  WHEN (NEW.pwel_stat = 1)
DECLARE
    ilosc INT := 0;
BEGIN
    SELECT Count(*)
    INTO   ilosc
    FROM   uscadm.usc_peselu
    WHERE  rk = :NEW.rk
           AND dz = :NEW.dz
           AND nr = :NEW.nr
           AND nrp = :NEW.nrp
           AND idusc = :NEW.idusc;

    IF ilosc = 1 THEN
      UPDATE uscadm.usc_peselu
      SET    ( idusc, rk, dz, nr,
               nrp, dzpl, nro, nazwpl,
               nazw, imie1pl, imie1, imier,
               ur_datar, ur_datam, ur_datad, ur_msc,
               idur_msc, ktur_msc, ur_kraj, oj_nazw,
               oj_nazwr, oj_imie1, oj_imier, ma_nazw,
               ma_nazwrpl, ma_nazwr, ma_imie1, ma_imier,
               pesel, a_msc, ida_msc, kta_msc,
               a_msc_kp, a_ulica, a_dom, a_lokal,
               a_kraj, typ_adr, mpesel, opesel,
               m_dow_typ, m_dow_nr, m_dow_wyd, m_dow_msc,
               idm_dow_msc, m_dow_datar, m_dow_datam, m_dow_datad,
               m_dow_kraj, o_dow_typ, o_dow_nr, o_dow_wyd,
               o_dow_msc, ido_dow_msc, o_dow_datar, o_dow_datam,
               o_dow_datad, o_dow_kraj, plec, wa_datar,
               wa_datam, wa_datad, odp_kto, odp_kiedy,
               mel_kto, mel_kiedy, zd_datar, zd_datam,
               zd_datad, zd_upr_datar, zd_upr_datam, zd_upr_datad,
               zd_n, zd_kod, zd_dok, zd_org,
               zd_org_opis, zd_msc, idzd_msc ) = (SELECT ODPSKR.idusc,
                                                         ODPSKR.rk,
                                                         ODPSKR.dz,
                                                         ODPSKR.nr,
                                                         ODPSKR.nrp,
                                                         ODPSKR.dzpl,
                                                         ODPSKR.nro,
                                                         ODPSKR.nazwpl,
                                                         ODPSKR.nazw,
                                                         ODPSKR.imie1pl,
                                                         ODPSKR.imie1,
                                                         ODPSKR.imier,
                                                         ODPSKR.ur_datar,
                                                         ODPSKR.ur_datam,
                                                         ODPSKR.ur_datad,
                                                         ODPSKR.ur_msc,
                                                         ODPSKR.idur_msc,
             uscadm.Fnnrstattoteryt(ODPSKR.idur_msc),
             ODPSKR.ur_kraj,
             ODPSKR.oj_nazw,
             ODPSKR.oj_nazwr,
             ODPSKR.oj_imie1,
             ODPSKR.oj_imier,
             ODPSKR.ma_nazw,
             ODPSKR.ma_nazwrpl,
             ODPSKR.ma_nazwr,
             ODPSKR.ma_imie1,
             ODPSKR.ma_imier,
             :NEW.pesel,
             :NEW.a_msc,
             :NEW.ida_msc,
             uscadm.Fnnrstattoteryt(:NEW.ida_msc),
             :NEW.a_msc_kp,
             :NEW.a_ulica,
             :NEW.a_dom,
             :NEW.a_lokal,
             :NEW.a_kraj,
             :NEW.typ_adr,
             :NEW.mpesel,
             :NEW.opesel,
             :NEW.m_dow_typ,
             :NEW.m_dow_nr,
             :NEW.m_dow_wyd,
             :NEW.m_dow_msc,
             :NEW.idm_dow_msc,
             :NEW.m_dow_datar,
             :NEW.m_dow_datam,
             :NEW.m_dow_datad,
             :NEW.m_dow_kraj,
             :NEW.o_dow_typ,
             :NEW.o_dow_nr,
             :NEW.o_dow_wyd,
             :NEW.o_dow_msc,
             :NEW.ido_dow_msc,
             :NEW.o_dow_datar,
             :NEW.o_dow_datam,
             :NEW.o_dow_datad,
             :NEW.o_dow_kraj,
             ODPSKR.plec,
             AKT.wa_datar,
             AKT.wa_datam,
             AKT.wa_datad,
             ODPSKR.idmr_kto,
             ODPSKR.idmr_kiedys,
             :NEW.idmr_kto,
             :NEW.idmr_kiedys,
             ODPSKR.zd_datar,
             ODPSKR.zd_datam,
             ODPSKR.zd_datad,
             ODPSKR.zd_upr_datar,
             ODPSKR.zd_upr_datam,
             ODPSKR.zd_upr_datad,
             ODPSKR.zd_n,
             ODPSKR.zd_kod,
             ODPSKR.zd_dok,
             ODPSKR.zd_org,
             ODPSKR.zd_org_opis,
             ODPSKR.zd_msc,
             ODPSKR.idzd_msc
             FROM   uscadm.usc_uodpskr ODPSKR
             join uscadm.usc_uakt AKT
               ON ODPSKR.rk = AKT.rk
                  AND ODPSKR.dz = AKT.dz
                  AND ODPSKR.nr = AKT.nr
                  AND ODPSKR.nrp = AKT.nrp
                  AND ODPSKR.idusc = AKT.idusc
             WHERE  ODPSKR.rk = :NEW.rk
             AND ODPSKR.dz = :NEW.dz
             AND ODPSKR.nr = :NEW.nr
             AND ODPSKR.nrp = :NEW.nrp
             AND ODPSKR.idusc = :NEW.idusc);

      :NEW.pwel_stat := 2;
    ELSIF ilosc = 0 THEN
      INSERT INTO uscadm.usc_peselu
                  (idusc,
                   rk,
                   dz,
                   nr,
                   nrp,
                   dzpl,
                   nro,
                   nazwpl,
                   nazw,
                   imie1pl,
                   imie1,
                   imier,
                   ur_datar,
                   ur_datam,
                   ur_datad,
                   ur_msc,
                   idur_msc,
                   ktur_msc,
                   ur_kraj,
                   oj_nazw,
                   oj_nazwr,
                   oj_imie1,
                   oj_imier,
                   ma_nazw,
                   ma_nazwrpl,
                   ma_nazwr,
                   ma_imie1,
                   ma_imier,
                   pesel,
                   a_msc,
                   ida_msc,
                   kta_msc,
                   a_msc_kp,
                   a_ulica,
                   a_dom,
                   a_lokal,
                   a_kraj,
                   typ_adr,
                   mpesel,
                   opesel,
                   m_dow_typ,
                   m_dow_nr,
                   m_dow_wyd,
                   m_dow_msc,
                   idm_dow_msc,
                   m_dow_datar,
                   m_dow_datam,
                   m_dow_datad,
                   m_dow_kraj,
                   o_dow_typ,
                   o_dow_nr,
                   o_dow_wyd,
                   o_dow_msc,
                   ido_dow_msc,
                   o_dow_datar,
                   o_dow_datam,
                   o_dow_datad,
                   o_dow_kraj,
                   plec,
                   wa_datar,
                   wa_datam,
                   wa_datad,
                   odp_kto,
                   odp_kiedy,
                   mel_kto,
                   mel_kiedy,
                   zd_datar,
                   zd_datam,
                   zd_datad,
                   zd_upr_datar,
                   zd_upr_datam,
                   zd_upr_datad,
                   zd_n,
                   zd_kod,
                   zd_dok,
                   zd_org,
                   zd_org_opis,
                   zd_msc,
                   idzd_msc)
      SELECT ODPSKR.idusc,
             ODPSKR.rk,
             ODPSKR.dz,
             ODPSKR.nr,
             ODPSKR.nrp,
             ODPSKR.dzpl,
             ODPSKR.nro,
             ODPSKR.nazwpl,
             ODPSKR.nazw,
             ODPSKR.imie1pl,
             ODPSKR.imie1,
             ODPSKR.imier,
             ODPSKR.ur_datar,
             ODPSKR.ur_datam,
             ODPSKR.ur_datad,
             ODPSKR.ur_msc,
             ODPSKR.idur_msc,
             uscadm.Fnnrstattoteryt(ODPSKR.idur_msc),
             ODPSKR.ur_kraj,
             ODPSKR.oj_nazw,
             ODPSKR.oj_nazwr,
             ODPSKR.oj_imie1,
             ODPSKR.oj_imier,
             ODPSKR.ma_nazw,
             ODPSKR.ma_nazwrpl,
             ODPSKR.ma_nazwr,
             ODPSKR.ma_imie1,
             ODPSKR.ma_imier,
             :NEW.pesel,
             :NEW.a_msc,
             :NEW.ida_msc,
             uscadm.Fnnrstattoteryt(:NEW.ida_msc),
             :NEW.a_msc_kp,
             :NEW.a_ulica,
             :NEW.a_dom,
             :NEW.a_lokal,
             :NEW.a_kraj,
             :NEW.typ_adr,
             :NEW.mpesel,
             :NEW.opesel,
             :NEW.m_dow_typ,
             :NEW.m_dow_nr,
             :NEW.m_dow_wyd,
             :NEW.m_dow_msc,
             :NEW.idm_dow_msc,
             :NEW.m_dow_datar,
             :NEW.m_dow_datam,
             :NEW.m_dow_datad,
             :NEW.m_dow_kraj,
             :NEW.o_dow_typ,
             :NEW.o_dow_nr,
             :NEW.o_dow_wyd,
             :NEW.o_dow_msc,
             :NEW.ido_dow_msc,
             :NEW.o_dow_datar,
             :NEW.o_dow_datam,
             :NEW.o_dow_datad,
             :NEW.o_dow_kraj,
             ODPSKR.plec,
             AKT.wa_datar,
             AKT.wa_datam,
             AKT.wa_datad,
             ODPSKR.idmr_kto,
             ODPSKR.idmr_kiedys,
             :NEW.idmr_kto,
             ODPSKR.idmr_kiedys,
             ODPSKR.zd_datar,
             ODPSKR.zd_datam,
             ODPSKR.zd_datad,
             ODPSKR.zd_upr_datar,
             ODPSKR.zd_upr_datam,
             ODPSKR.zd_upr_datad,
             ODPSKR.zd_n,
             ODPSKR.zd_kod,
             ODPSKR.zd_dok,
             ODPSKR.zd_org,
             ODPSKR.zd_org_opis,
             ODPSKR.zd_msc,
             ODPSKR.idzd_msc
      FROM   uscadm.usc_uodpskr ODPSKR
             join uscadm.usc_uakt AKT
               ON ODPSKR.rk = AKT.rk
                  AND ODPSKR.dz = AKT.dz
                  AND ODPSKR.nr = AKT.nr
                  AND ODPSKR.nrp = AKT.nrp
                  AND ODPSKR.idusc = AKT.idusc
      WHERE  ODPSKR.rk = :NEW.rk
             AND ODPSKR.dz = :NEW.dz
             AND ODPSKR.nr = :NEW.nr
             AND ODPSKR.nrp = :NEW.nrp
             AND ODPSKR.idusc = :NEW.idusc;

      :NEW.pwel_stat := 2;
    END IF;
END umeld_pwel_trig; 

Seems like i messed up the syntax real bad. this works.

Edit: Had some problems with mutable error in trigger fixed it with the updated script above.

2 Comments

you're getting the mutating error because you're fetching from the same table the trigger is firing on. See: stackoverflow.com/a/2138468/92837
above script doesnt get the mutating error anymore :)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.