hamzi 0 Denunciar post Postado Setembro 16, 2009 Estou tentando criar uma trigger para que quando um registro seja deletado de uma determinada tabela seja guardado em uma tabela auxiliar de auditoria a informação de 3 colunas. Ao rodar o script abaixo a trigger é criada mas não é compilada. Alguém pode me ajudar ??? CREATE OR REPLACE TRIGGER TRG_DEL_SMORCALOG AFTER DELETE ON SMORCA FOR EACH ROW BEGIN DECLARE /*VARIAVEIS*/ IdLogin NUMBER(10); V_OsUser VARCHAR2(30); v_Machine VARCHAR2(64); v_Program VARCHAR2(48); v_LogonTime DATE; BEGIN -- INCIANDO A GRAVAÇÃO DA TABELA DE LOGIN SELECT OSUSER , MACHINE, PROGRAM, LOGON_TIME INTO V_OsUser, v_Machine, v_Program, v_LogonTime FROM V$SESSION WHERE AUDSID = USERENV('sessionid'); -- FAZER O INSERT DA SMCONTALOG_IDLOG SELECT SEQ_SMORCA_IDLOG.NEXTVAL INTO IDLOGIN FROM DUAL; INSERT INTO SMORCALOG ( SMORCALOG_IDLOG, SMORCALOG_OSUSER, SMORCALOG_MACHINE, SMORCALOG_PROGRAM, SMORCALOG_LOGONTIME, SMORCALOG_IDUSUARIO, SMORCALOG_TPMV, SMORCALOG_DATAMV, SMORCALOG_ID, SMORCALOG_IDPESSOA, SMORCALOG_IDUSR ) VALUES ( IDLOGIN, v_OSUSER, v_MACHINE, v_PROGRAM, v_LOGONTIME, Pkgsimah.IDUSUARIO, 'E', SYSDATE, :OLD.SMORCA_ID, :OLD.SMORCA_IDPESSOA, :OLD.SMORCA_IDUSR ); END; END TRG_DEL_SMORCALOG; Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Setembro 16, 2009 Ao rodar o script abaixo a trigger é criada mas não é compilada. Alguém pode me ajudar ??? A trigger existe ? Está válida (valid) ? Executa ? Compartilhar este post Link para o post Compartilhar em outros sites
hamzi 0 Denunciar post Postado Setembro 16, 2009 SIM MOTTA, O SCRIPT É EXECUTADO MAS A TRIGGER FICA INVÁLIDA. E QUANDO EXECUTO UMA EXCLUSÃO NA TABELA QUE QUERO AUDITAR ELA NÃO DISPARA A TRIGGER. OBRIGADO PELO RETORNO. Ao rodar o script abaixo a trigger é criada mas não é compilada. Alguém pode me ajudar ??? A trigger existe ? Está válida (valid) ? Executa ? Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Setembro 16, 2009 Tem algum programa gerenciador tipo SqlDeveloper ou SqlTools ? Consegue ver o erro que tem a trigger ? No SqlPlus , após criar a trigger um SHOW ERRORS acho que funciona. Compartilhar este post Link para o post Compartilhar em outros sites
hamzi 0 Denunciar post Postado Setembro 16, 2009 quando rodo o script no TOAD aparece a mensagem que a trigger foi criada ou alterada com sucesso, mas quando rodo no SQLPLUS aparece a mensagem que a trigger foi criada mas compilada com erros. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Setembro 16, 2009 o TOAD nao exibe o erro ? Compartilhar este post Link para o post Compartilhar em outros sites
hamzi 0 Denunciar post Postado Setembro 16, 2009 No TOAD não. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Setembro 16, 2009 Se não fica inválida a trigger é executada , não tem jeito a não ser que esteja DISABLE. Se tiver ENABLE mas inválida o Oracle : 1) Tenta compilar e se der zebra na compilação sobe um erro para o SQL chamador da trigger. 2) Se compilar executa a trigger . Compartilhar este post Link para o post Compartilhar em outros sites
hamzi 0 Denunciar post Postado Setembro 17, 2009 DESCULPA MOTTA, MAS NÃO ENTENDI. Se não fica inválida a trigger é executada , não tem jeito a não ser que esteja DISABLE. Se tiver ENABLE mas inválida o Oracle : 1) Tenta compilar e se der zebra na compilação sobe um erro para o SQL chamador da trigger. 2) Se compilar executa a trigger . Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Setembro 17, 2009 Uma TRIGGER pode estar USER_TRIGGERS.STATUS (ENABLE/DISABLE) - Executa/não executa USER_OBJECTS.STATUS (VALID/INVALID) - Válida/Inválida (Após a compilação) Se ela estiver ENABLE e VALID é chamada Se estiver ENABLE e INVALID e compilida __Se ficar VALID é chamada __Senão (INVALID) um erro é enviado a query chamadora. Compartilhar este post Link para o post Compartilhar em outros sites
hamzi 0 Denunciar post Postado Setembro 18, 2009 Esta assim Motta. Na View USER_TRIGGERS ela esta Enable Na View USER_OBJECTS ela esta Invalid ------------------------------------------------------- Uma TRIGGER pode estar USER_TRIGGERS.STATUS (ENABLE/DISABLE) - Executa/não executa USER_OBJECTS.STATUS (VALID/INVALID) - Válida/Inválida (Após a compilação) Se ela estiver ENABLE e VALID é chamada Se estiver ENABLE e INVALID e compilida __Se ficar VALID é chamada __Senão (INVALID) um erro é enviado a query chamadora. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Setembro 19, 2009 O TOAD deveria mostrar qual o erro da Trigger , nunca usei o TOAD não sei se ele tem alguma configuração para não exibi-los. Com a trigger invalid ela não será executada, um erro porém deveria ocorrer. Não conseguindo ver o erro com o TOAD (estranho) tente com o SqlTools ou SqlDeveloper (são livres). Compartilhar este post Link para o post Compartilhar em outros sites