› Fóruns › Banco de dados Oracle › Trigger com Alter Table › Trigger com Alter Table
25 de março de 2009 às 3:54 pm
#85936
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