Ir para conteúdo

POWERED BY:

Arquivado

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

junaooaks

pegar informação antes de alterar

Recommended Posts

ola pessoal...

ESTOU querendo fazer um procedimento que nao tenho certeza se tem como fazer

bom vamos la.

 

tenho uma tabela de log que vai registrar as alterações

campos da tabela log

-idLog

-tabelaReferente

-campoReferente

-antigo

-novo

 

 

camporReferente é o campo que esta sofrendo alteração na tabela ex: tabela cliente campo nome

 

como posso fazer esta procedure

DELIMITER $$

CREATE PROCEDURE logDB()

 

DECLARE idLog int NOT NULL AUTO_INCREMENT;

DECLARE tabelaReferente CHAR(100) NOT NULL;

DECLARE campoReferente CHAR (100) NOT NULL;

DECLARE antigo VARCHAR(200) NOT NULL;

DECLARE novo VARCHAR (200) NOT NULL;

DECLARE data DATE NOT NULL;

DECLARE idUsuario INT NOT NULL;

 

BEGIN

 

END

DELIMITER;

 

 

o que eu quero e toda alteração que for realizado no banco de dados tipo update e delete seja registrado na tabela

e so um help um exemplo nao quero que faz pra mim

 

e so que estou perdido no meu próprio raciocínio

Compartilhar este post


Link para o post
Compartilhar em outros sites

...

o que eu quero e toda alteração que for realizado no banco de dados tipo update e delete seja registrado na tabela

e so um help um exemplo nao quero que faz pra mim

...

 

Tente usar uma trigger.

Compartilhar este post


Link para o post
Compartilhar em outros sites

motta eu ja tinha visto este post e que meu ingles e fraco

 

outra coisa qual a diferenca entre procedure e trigger(gatilho)?

 

motta vi um artigo seu Clique aqui

e o que quero fazer e algo parecido so que nao sei como pegar a tabela dinamica

 

tipo o sistema dispara uma update na tabela cliente eu quero pegar o nome desta tabela referenciada na consulta e colocar na triggers

 

-- Trigger DDL Statements
DELIMITER   
-- colocar tabela dinamica tipo dependendo da alteracao que esta acontedendo no banco de dados
-- se tiver altrando a tabela cliente  entao variavel tabela vai receber nome cliente
DECLARE tabela char(100);
tabela:= new.tabela

CREATE trigger log 
AFTER INSERT ON tabela
FOR EACH ROW

BEGIN    
DECLARE id int;        
DECLARE campo CHAR (100);    
DECLARE antigo VARCHAR(200);    
DECLARE novo VARCHAR (200);    


campo := new.campo
antigo:= new.antigo
novo := new.novo

   INSERT INTO logDB VALUES (tabelaReferente = tabela, campoReferente= campo, antigo = antigo, novo= novo, data= CURRENT_DATE, idUsuario = usuario);  

END    
DELIMITER |;  


 

como posso pegar a tabela dinanmica ? e os campos desta tabela

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aquilo só funciona em Oracle, teria de ser adaptado para outros BD´s.

Conheço quase nada da programação em MySql para fazer isto.

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.