Pular para o conteúdo

Fóruns Banco de dados Oracle Trigger com Alter Table Trigger com Alter Table

#85936
rerodrig
Participante

    Cara, fiz um exemplo bem simples que pode te ajudar…a tabela alterada tem como buscar com a variável ora_dict_obj_name, mas não sei se tem algo específico para as colunas alteradas, talvez você tenha que fazer um tratamento para recuperar isso.


    create or replace trigger trg_teste before alter on arius_dev.schema
    declare
    t dbms_standard.ora_name_list_t;
    v number;
    v_retorno varchar2(4000);
    begin
    dbms_output.put_line('Tabela alterada: ' || ora_dict_obj_name);

    v := ora_sql_txt(t);
    
    for i in 1 .. v loop
        v_retorno := v_retorno || t(i);
    end loop;
    
    dbms_output.put_line('Código da alteração: ' || v_retorno);
    
    dbms_output.put_line('Características anteriores das colunas:');
    
    for c_dados in (select column_name,
                           data_type,
                           data_length,
                           data_precision,
                           data_scale
                      from all_tab_columns
                     where owner = ora_dict_obj_owner
                       and table_name = ora_dict_obj_name) loop
    
        dbms_output.put_line('Nome: ' || c_dados.column_name);
        dbms_output.put_line('Tipo: ' || c_dados.data_type);
    
        if c_dados.data_type = 'VARCHAR2' then
            dbms_output.put_line('Tamanho: ' || c_dados.data_length);
        else
            dbms_output.put_line('Tamanho: ' || c_dados.data_precision);
            dbms_output.put_line('Precisão: ' || c_dados.data_scale);
        end if;
    
        dbms_output.put_line('------------------------------------');
    
    end loop;
    

    end;

    Acho que a partir do exemplo você consegue fazer o que você precisa.

    Falow…abraço