vagnerC 0 Denunciar post Postado Agosto 26, 2009 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
LHAlmeida 0 Denunciar post Postado Agosto 26, 2009 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