Senhores, tenho uma view que leva o valor de ROWID com alias RID. Essa view chama uma trigger de Insert, sempre que eu for dar um Insert via Aplicativo(Escrito em Delphi). Acontece que sempre que eu vou inserir um novo registro, diz que o campo RID de ter um valor. Eu não posso retirar esse campo(ROWID) da view, que é por ele que eu faço o DELETE e o UPDATE(mais duas triggers). Companheiros, como eu faço então para solucionar esse problema, sempre que eu inserir um novo registro? Quando for um novo, é chamada a VIEW e não a tabela. Abaixo os códigos da VIEW e da TRIGGER.
Selecionar tudo
CREATE OR REPLACE VIEW TRAFOS_UF AS
SELECT NUMID, TAP_PRI, TAP_SEC, TAP_TER, CAR_PS, CAR_ST, CAR_PT,MVA_V2_ST,
MVA_V2_PT, INSTALACAO, EQUIPAMENTO, FASES, MVA_NOM_PS, MVA_NOM_ST,
MVA_NOM_PT, MVA_V1_PS, MVA_V1_ST, MVA_V1_PT, MVA_V2_PS, CENTER_TAP, ROWID RID,
'N' VERSIONED
FROM TRAFOS_UF_LT T;
Selecionar tudo
CREATE OR REPLACE TRIGGER "SGD_INSERT_TRAFOS_UF" INSTEAD OF INSERT ON TRAFOS_UF
DECLARE
VOLD TRAFOS_UF%ROWTYPE;
VNEW TRAFOS_UF%ROWTYPE;
PROCESS INTEGER;
BEGIN
PROCESS := SGD$ADM.GETPROCESS_TRIGGER;
VOLD.NUMID := :OLD.NUMID;
VOLD.TAP_PRI := :OLD.TAP_PRI;
VOLD.TAP_SEC := :OLD.TAP_SEC;
VOLD.TAP_TER := :OLD.TAP_TER;
VOLD.CAR_PS := :OLD.CAR_PS;
VOLD.CAR_ST := :OLD.CAR_ST;
VOLD.CAR_PT := :OLD.CAR_PT;
VOLD.MVA_V2_ST := :OLD.MVA_V2_ST;
VOLD.MVA_V2_PT := :OLD.MVA_V2_PT;
VOLD.INSTALACAO := :OLD.INSTALACAO;
VOLD.EQUIPAMENTO := :OLD.EQUIPAMENTO;
VOLD.FASES := :OLD.FASES;
VOLD.MVA_NOM_PS := :OLD.MVA_NOM_PS;
VOLD.MVA_NOM_ST := :OLD.MVA_NOM_ST;
VOLD.MVA_NOM_PT := :OLD.MVA_NOM_PT;
VOLD.MVA_V1_PS := :OLD.MVA_V1_PS;
VOLD.MVA_V1_ST := :OLD.MVA_V1_ST;
VOLD.MVA_V1_PT := :OLD.MVA_V1_PT;
VOLD.MVA_V2_PS := :OLD.MVA_V2_PS;
VOLD.CENTER_TAP := :OLD.CENTER_TAP;
VNEW.NUMID := NVL(:NEW.NUMID,0 );
VNEW.TAP_PRI := :NEW.TAP_PRI;
VNEW.TAP_SEC := :NEW.TAP_SEC;
VNEW.TAP_TER := :NEW.TAP_TER;
VNEW.CAR_PS := :NEW.CAR_PS;
VNEW.CAR_ST := :NEW.CAR_ST;
VNEW.CAR_PT := :NEW.CAR_PT;
VNEW.MVA_V2_ST := :NEW.MVA_V2_ST;
VNEW.MVA_V2_PT := :NEW.MVA_V2_PT;
VNEW.INSTALACAO := :NEW.INSTALACAO;
VNEW.EQUIPAMENTO := :NEW.EQUIPAMENTO;
VNEW.FASES := :NEW.FASES;
VNEW.MVA_NOM_PS := :NEW.MVA_NOM_PS;
VNEW.MVA_NOM_ST := :NEW.MVA_NOM_ST;
VNEW.MVA_NOM_PT := :NEW.MVA_NOM_PT;
VNEW.MVA_V1_PS := :NEW.MVA_V1_PS;
VNEW.MVA_V1_ST := :NEW.MVA_V1_ST;
VNEW.MVA_V1_PT := :NEW.MVA_V1_PT;
VNEW.MVA_V2_PS := :NEW.MVA_V2_PS;
VNEW.CENTER_TAP := NVL(:NEW.CENTER_TAP,0
);
IF (PROCESS = 0) THEN
/** DISPARAR DISPATCH (BIR)**/
PCK_TRG_TRAFOS_UF.BIR(VOLD,VNEW);
END IF;
INSERT INTO TRAFOS_UF_LT (NUMID, TAP_PRI, TAP_SEC, TAP_TER, CAR_PS, CAR_ST, CAR_PT, MVA_V2_ST, MVA_V2_PT, INSTALACAO, EQUIPAMENTO, FASES, MVA_NOM_PS, MVA_NOM_ST, MVA_NOM_PT, MVA_V1_PS, MVA_V1_ST, MVA_V1_PT, MVA_V2_PS, CENTER_TAP)
VALUES (VNEW.NUMID, VNEW.TAP_PRI, VNEW.TAP_SEC, VNEW.TAP_TER, VNEW.CAR_PS, VNEW.CAR_ST, VNEW.CAR_PT, VNEW.MVA_V2_ST, VNEW.MVA_V2_PT, VNEW.INSTALACAO, VNEW.EQUIPAMENTO, VNEW.FASES, VNEW.MVA_NOM_PS, VNEW.MVA_NOM_ST, VNEW.MVA_NOM_PT, VNEW.MVA_V1_PS, VNEW.MVA_V1_ST, VNEW.MVA_V1_PT, VNEW.MVA_V2_PS, VNEW.CENTER_TAP);
IF (PROCESS = 0) THEN
/** DISPARAR DISPATCH (AIR)**/
PCK_TRG_TRAFOS_UF.AIR(VOLD,VNEW);
END IF;
END;