Jump to content
José Peixoto

Disparo ordenado de triggers

Recommended Posts

Olá,

 

há alguma forma de fazer uma trigger só ser executada depois que a outra executar? 

 

Por exemplo: a trigger2 só é disparada quando a trigger1 fizer o commit das informações.

 

Obrigado desde já :)

Share this post


Link to post
Share on other sites

Complicou , pode definir o problema , talvez tenha outra solução.

 

Todavia tente

Grave uma tabela temporaria com a id da transaction  LOCAL_TRANSACTION_ID

Pela trigger1

A trigger2 aguarda até existir o registro da trigger1

Faz o que deve fazer e ddleta o registro da temp.

Risco de deadlock alto todavia ...

E supõe que as duas tabelas foram alteradas.

 

Um chute ...

 

Share this post


Link to post
Share on other sites
Em 03/02/2020 at 11:12, José Peixoto disse:

Aí é na mesma tabela. 

 

Há algum comando que seja em tabelas diferentes?

mas não dá para fazer dois updates em tabelas diferentes

a hora que tu fazer o update na tabela 1, vai rodar a trigger da tabela1

a hora que tu fazer o update na tabela 2, vai rodar a trigger da tabela2

o que dá para fazer, é na trigger da tabela2, chamar uma função/procedure que execute o comando que tu queres na tabela 1

Share this post


Link to post
Share on other sites

De fato , mas creio que ele citava sessões diferentes.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By gcors88
      Prezados, desenvolvi um gatilho onde este tem comunicação com outra tabela, uma é a coleta_sinal_vital, e onde o gatilho foi criado é na table  itcoleta_sinal_vital ( esta possui uma fk da primeira), a questão é que dentro do gatilho realizo um select na primeira tabela para consultar o valor inserido em uma coluna da primeira tabela, faço essa consulta baseada nessa fk que esta sendo inserida ou seja where = :new.cd_coleta_sinal_vital, a questão é que no momento em que esse select é executado ele não retorna dado nenhum, acredito que isto ocorre porque a inserção em ambas as tabelas é feito de forma simultânea, pois se comparado posteriormente o valor da coluna sempre é inserido, gostaria de saber se existe alguma forma de aplicar uma espera ou atraso neste gatilho para que ele possa capturar este valor sem problemas, grato!
    • By NaPraia
      Olá pessoal,
      Estou com um probleminha, eu tenho uma sequence criado num owner (owner_a), executei o comando para criar em outro owner(owner_b):
      grant all on sequence_a to owner_b
      e consegui usar, só que no dia seguinte esse grant sumiu e deu erro: ora-00942: tabela ou view não existe. No owner_a funciona corretamente.
      voltei a executar o comando de grant de funcionou de boa mas de ontem para hoje ocorreu novamente
      E acontece só para essa sequence, as outras do banco, não têm problema, funcionam normalmente
      Eu até pensei em dar um drop e criar de novo mas fico com receio que possa ter algum impacto no sistema que é daqueles que ninguém gosta de mexer, "tá funcionando, não mexe"
      E acontence nos dois ambiente, homologação e produção.
      Obrigado
    • By asacap1000
      Salve galera estou com um problema em uma consulta no banco de dados.
      Preciso trazer um xml de um campo porém tem alguns lançamentos que estão com mais de 4000 caracteres, estou usando para a pesquisa o seguinte select
       
      SELECT ID_WS_GATEWAY, ID_WS_CONFIG, STATUS, ERRCODE, ERRMSG, FOLDER, FILENAME, DATE_IN, DATE_ON, SITE, WS, DBMS_LOB.SUBSTR(T.XMLDATA.getClobVal(),4000,1) XMLDATA, DIRECTION FROM WS_GATEWAY T Tem alguma outra forma de buscar uma quantidade maior neste campo?
       
       
    • By asfonseca
      Olá,
       
      Estou enfrentando o seguinte problema. Tenho uma aplicação web desenvolvida por terceiros rodando no CentOS Linux e consultando um banco Oracle. O banco Oracle está configurado da seguinte forma:
       
      NLS_LANGUAGE = BRAZILIAN PORTUGUESE
      NLS_TERRITORY = BRAZIL
      NLS_CHARACTERSET = WE8ISO8859P1
      NLS_NCHAR_CHARACTERSET = AL16UTF16
       
      Quando realizo uma query SQL a partir da aplicação no servidor CentOS em questão o caracteres de acentuação vêm modificados. Tentei elaborar a query com o comando CONVERT, como abaixo:
       
      Sintaxe:
      CONVERT(string_expression,to_data_set[,from_data_set]);
      ex:
      SELECT
        CONVERT( 'Ä Ê Í', 'US7ASCII', 'WE8ISO8859P1' )
      FROM
        DUAL;
       
      No meu caso, estou tentando:
      SELECT 
      CONVERT (expressao, 'UTF8', 'WE8ISO8859P1')
      FROM ...
       
      Porém não consigo encontrar a combinação correta de to_data_set e from_data_set.
       
      Alguma sugestão? Inclusive de uma abordagem diferente dessa do uso do CONVERT. 
       
      Agradeço.
       
      --ASF
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.