Jak pobrać zmienione DDL tabeli po dodaniu kolumny

0

Witajcie,

Mam następujący problem. Stworzyłem triggera:

CREATE OR REPLACE TRIGGER DDL_AD_GIT_TRG AFTER DDL ON DATABASE

Trigger w zasadzie odkłada w postaci plików tekstowych dane źródło bazodanowe np ciało procedury lub pakietu. Podpiąłem trigger również pod tabele i fajnie działa ... dopóki ktoś nie wykonuje ALTER TABLE ... bo wtedy zapisuje mi się właśnie cała komenda ALTER TABLE ... Postanowiłem to nieco zmienić i zamiast:

  l_count := ora_sql_txt(l_sql_text);
  for i in 1..l_count loop
    l_sql := l_sql||l_sql_text(i);
  end loop;

dla tabeli robię:

select dbms_metadata.get_ddl('TABLE',ora_dict_obj_name) into l_sql from dual;  

niestety mimo iż trigger jest na zdarzeniu AFTER to dbms_metadata.get_ddl zwraca mi źródło z PRZED altera. Przykład:
Dodaję do tabeli kolumnę poleceniem

ALTER TABLE ADD (COL2 varchar2(1)); 

a l_sql posiada DDL BEZ tej kolumny.
Nie wiem skąd taki rozjazd bo jak odświeżę widok tabeli np w TOAD to kolumna się dodaje bezproblemowo. Przypuszczam, że dbms_metadata posiada jakiś rodzaj "cache" i pewnie dopiero po chwili się to odświeża dlatego nie mam pełnego i aktualnego źródła tabeli. Mógłbym w opóźnieniu puścić np JOB'a ale to mało eleganckie rozwiązanie. Czy ktoś ma pomysł jak uzyskać źródło tabeli na triggerze after ddl?

1 użytkowników online, w tym zalogowanych: 0, gości: 1