Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Mrjoni

Criacao de Trigger

Recommended Posts

Opa a todos,

 

Olha eu tenho um codigo que uso para executar um uma Trigger so que eu queria automatiza-lo pois tenho tabelas que tem muitas colunas. O codigo é o seguinte:

begin
     DECLARE valorNovo TEXT;
     set @valorNovo=concat('Codigo: ',NEW.codigo,', ');
     ...
     set @valorNovo=concat(@valorNovo,'Cod. regiao: ',NEW.cod_regiao,', ');


    INSERT INTO log_eventos SET Data = NEW.logData, CodUsuario = NEW.logCodUsuario, nomeUsuario = NEW.logUsuario, IP = NEW.logIP, evento='Inclusao', tabela='Imobiliarias', valoresNovos= @valorNovo;
end

 

Eu gostaria de saber como eu posso fazer para gerar um loop dentro da tabela listar os campos e automatizar as linhas dos SET..

tipo assim:

set colunas = select COLUNAS from minha_tabela

for each itens in colunas

set @valorNovo=concat(itens.colunas,': ',NEW.itens.colunas,', ')

next

Isto é so um exemplo, mas é mais ou menos assim q eu queria.

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta boa tarde,

 

Olha dei uma olhada no link que você me passou mas como sou iniciante não consegui entender muito coisa.

Teria como você me ajudar um pouco mais algo como um exemplo.

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites
Eu gostaria de saber como eu posso fazer para gerar um loop dentro da tabela listar os campos e automatizar as linhas dos SET..

 

Pelo que entendi você queria saber como obter a lista de campos de uma tabela.

 

A documentação que passei tem a relação das tabelas de metadados do Mysql, entre elas a INFORMATION_SCHEMA.COLUMNS que te informa isto.

 

Qual o problema exatamente ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

MOtta boa tarde,

OLha eu queria algo assim

Hoje eu escrevo assim para pegar o novo cnteudo e passar para uma variavel.

DECLARE valorNovo TEXT;

set @valorNovo=concat('Codigo: ',NEW.codigo,', ');

Eu queria altomatizar isto tipo assim:

for each campo in tabela.clientes

set @valorNovo=concat(campo.tostring,': ',NEW.campo,', ');

next

 

Fazer um loop nas colunas ta tabela Clientes e depois guardar o nome da coluna diga-se "campo.tostring" e o seu conteudo diga-se "NEW.campo"

 

assim eu teria uma mesma rotina para todas as tabelas.

 

Espero ter conseguido me explicar melhor agora.

 

Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Creio ter entendido, fiz uma rotina que gera triggers de log mas em Oracle.

 

A ideia básica e ler a tabela de metadados e montar a trigger.

 

Só que a trigger é estática, você parece buscar algo dinâmico.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.