Ir para conteúdo
Fórum Script Brasil
  • 0

Criação de logs


WildFall

Pergunta

Boa tarde pessoal, faz uma semana que estou tentando criar uma tabela de log e não consigo, deveria funcionar assim:


Sempre que houver um update ta tabela roupas inserir uma cópia do registro na tabela log, mas eu não consigo fazer isso com a sintaxe certa pro mysql, estou usando a última versão 5.7. Consegui vários exemplos de como fazer isso, mas nenhum funciona nem com alterações, aqui vai um exemplo:

 

CREATE TRIGGER `trg_log` AFTER UPDATE ON `roupas` 
    FOR EACH ROW BEGIN
	INSERT INTO registro (cod_paciente, Descroupa, horariovista, EntradaOuSaida) VALUES(NEW.cod_paciente, NEW.Descroupa, NEW.horariovista, NEW.EntradaOuSaida);

 

Essa é a tabela roupas:

CREATE TABLE IF NOT EXISTS `roupas` (
  `cod_paciente` int(10) NOT NULL,
  `cod_roupa` int(15) NOT NULL PRIMARY KEY AUTO_INCREMENT
  `Descroupa` varchar(500) COLLATE utf8_bin NOT NULL,
  `horariovista` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `SaidaOuEntrada` varchar(10) COLLATE utf8_bin NOT NULL
)

 

Se alguém puder me ajudar ficarei imensamente grato, já estou pesquisando isso há mais de uma semana sem resultados

 

 

Editado por WildFall
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Normalmente eu utilizo uma tabela de histórico (cópia da estrutura da tabela que quero acompanhar, com um campo a mais que é a data hora de entrada no historico.

CREATE TABLE IF NOT EXISTS `roupas_historico` (
  `cod_paciente` int(10) NOT NULL,
  `cod_roupa` int(15) NOT NULL PRIMARY KEY AUTO_INCREMENT
  `Descroupa` varchar(500) COLLATE utf8_bin NOT NULL,
  `horariovista` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `SaidaOuEntrada` varchar(10) COLLATE utf8_bin NOT NULL,
  dtEntradaHistorico datetime
)

O trigger fica assim:

DELIMITER $$

CREATE TRIGGER `nomedobanco`.`trg_log` BEFORE UPDATE ON `nomedobanco`.`teste`
   FOR EACH ROW 
BEGIN
   INSERT INTO roupas_historico(`cod_paciente`, `cod_roupa`, `Descroupa`, `horariovista`, `SaidaOuEntrada`, dtEntradaHistorico)
   VALUES (OLD.`cod_paciente`, OLD.`cod_roupa`, OLD.`Descroupa`, OLD.`horariovista`, OLD.`SaidaOuEntrada`, NOW());
END$$

DELIMITER ;

A gravação do log acontece antes da gravação dos dados desejados. O log recebe os dados que estavam na tabela antes de serem atualizados.

Em minhas tabelas eu utilizo 4 campos a mais que não coloquei aqui que são:

data hora inclusão informação

data hora atualização informação

identificador usuário resp inclusão

identificador usuário resp alteração

Editado por Denis Courcy
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...