Ir para conteúdo

POWERED BY:

Arquivado

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

vagnerC

Trigger

Recommended Posts

Bom dia pessoal,

 

Estou criando duas tabelas que se chamam: MATERIA, MATERIA_HISTORICO

- MATERIA(id_materia, data_lancamento, data_publicacao, etc.)

- MATERIA_HISTORICO(id_materia_historico, acao, data_lancamento, data_publicacao, usuario_id_usuario, usuario_ip, etc.)

 

Gostaria que toda vez que houvesse uma inserção, edição ou inclusão fosse uma copia do que foi inserido, editado ou excluido para a tabela MATERIA_HISTORICO, eu consegui fazer uma parte, mas estou com problema na hora de inserir o usuario_id_usuario e o usuario_ip, pois estes campos não estão na tabela MATERIA e sim na aplicação( PHP)!

 

Tentei fazer assim:

CREATE TRIGGER jth_editar AFTER UPDATE ON materia
FOR EACH ROW
INSERT INTO materia_historico SET
acao = 'editar',
data_lancamento = NEW.data_lancamento,
usuario_id_usuario = $usuario,
usuario_ip = $usuario_ip;
Mas não deu certo, ele salva no banco o nome da variavel ($usuario, $usuario_ip).

 

 

Alguém pode me ajudar?

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia,

Para esse tipo de controle via trigger, você teria que ter um usuário específico no banco de dados para cada usuário na sua aplicação.

Lembre que o usuário do banco de dados é aquele que você configurou na sua classe de conexao, no momento que conecta ao banco, esse usuário você conseguiria logar via trigger tranquilamente, porem como usa sempre o mesmo usuário para todas as conexões, os logs ficariam sempre para o mesmo usuário.

 

Faça isso via código php mesmo, onde você tem os dados do usuário na aplicação, ou então por meio de uma STORED PROCEDURE que insira os dados nas duas tabelas, onde, assim como na insert, você passaria os parametros (incluindo o danado do ip e codigo de usuario), pois esses não são conhecidos pelo seu servidor de dados.

 

Abraço

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.