Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Registrar alterações de uma tabela em outra (Histórico de Ações)

Wasup guys.

Estou querendo montar um Histórico de Ações pra um sistema, porém estou com algumas dúvidas. No caso registraria todas as ações (ins, up, remov).

Minha ideia inicial era:

.Quem realizou a alteração
.Quem foi alterado
.Campo alterado*
.Valor Antigo*
.Valor Novo*
.Ação realizada (No caso de INSERT/DELETE, não precisaria dos *)
.Tabela em que ocorreu alteração

Como eu poderia chegar nisso? Seria somente no BD, através de uma TRIGGER ou teria que ter algo do lado do PHP também? (Como iria pegar o "cpf responsavel, alterado..."?)

Outro detalhe também é que, suponhamos que a tabela seja:

.Nome
.Cargo
.Idade

No caso se eu realizasse um update nos três campos de uma só vez, teria que utilizar IFs dentro da TRIGGER pra realizar o INSERT na tabela de histórico, correto? (Se OLD.nome <> NEW.nome -> X , Se OLD.algo <> NEW.algo -> X..)?

Questão longa mas se alguém puder me dar uma moral. Estou seguindo a ideia de "TRIGGERs" pra fazer isso. Se houver outra maneira também, estamos ai.

HELPA EU!

4 respostas
solução!

Isso na verdade é um log de operações. O que você poderia fazer é ter uma tabela de log de operações com os campos que você mencionou:

Data da operação; Quem realizou a alteração; Quem foi alterado; Valor Antigo; Valor Novo; Nome da operação: Ex: Alteração do cadastro do cliente, Alteração do nome do cliente. Obs: Salve logs da coisas que você acha critico

Não acho necessário verificar se o valor é o mesmo do anterior, para gravar ou não o log

Não sei qual o seu cenário de negocio. Se poder dar mais detalhes para ter um maior entendimento.

Boa Luis!!

@Luis Miguel Barruco Amorim:

Sendo mais técnico, eu possuo duas tabelas "normais" e uma tabela pra registrar essas alterações:

.Usuarios
.Usuarios_Manual
.Usuarios_Log

O sistema consiste basicamente em uma tela onde você pode selecionar um determinado profissional e alterar permissões deste usuário com o sistema.

As vezes há a necessidade de vincular um profissional a uma unidade por qualquer motivo e isto é feito de maneira manual (um botão na página onde você seleciona uma unidade e seleciona as permissões do profissional). Somente este tipo de ação recebe também a permissão para ser deletada (em outras palavras, caso você insira uma vinculação manualmente, você pode deleta-la depois).

Na tela é mostrado claramente a divisão entre vinculações padrão e as manuais e ambas podem ser alteradas. Qualquer ação envolvendo estes aspectos devem ser registrados no log (Inserir uma nova vinculação, deletar a vinculação, alterar vinculação manual ou "padrão").

Basicamente é isso.

Já matei que terei que fazer em TRIGGERS, mas me pergunto como vou fazer pra puxar o ID do Usuário que fez a mudança.

Você tem alguma tela de acesso ao essa tela de alteração, tipo login ou algo do tipo??