这是我想在我的一个表上创建的触发器,它应该通过更新或插入将确定数据从3个表移动到第4个表,具体取决于是否存在。这是我到目前为止所提出的。
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;
我收到以下错误:
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)
答案 0 :(得分:1)
你混淆了INSERT ... VALUES和INSERT ... SELECT语法。你的INSERT应该是:
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;
答案 1 :(得分: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;
好像我搞砸了语法真的很糟糕。这很有效。
编辑: 如果触发器中有可变错误的一些问题,请使用上面更新的脚本修复它。