top of page

Criar tabela com RECCREATEDBY e RECMODIFIEDBY no SQLSERVER

  • Foto do escritor: Amanda Nascimento
    Amanda Nascimento
  • 3 de nov. de 2023
  • 2 min de leitura

Atualizado: 7 de ago.


Registrar quem criou ou modificou um registro (e quando isso ocorreu) é essencial para rastreabilidade e auditoria em sistemas. Nas tabelas, campos como RecCreatedBy, RecModifiedBy e suas respectivas datas (RecCreatedDate, RecModifiedDate) permitem monitorar mudanças feitas por usuários ou processos.



💠 Para criar uma tabela



ree


CREATE TABLE funcionarios (

  ID INT IDENTITY(1,1) PRIMARY KEY,

  nome VARCHAR(50),

  idade INT,

  RecCreatedBy VARCHAR(50),

  RecModifiedBy VARCHAR(50),

  RecCreatedDate DATETIME DEFAULT GETDATE(),

  RecModifiedDate DATETIME

);


  • RecCreatedBy e RecModifiedBy: armazenam o nome do usuário (obtido via SUSER_SNAME()).

  • RecCreatedDate: definida automaticamente como a data/hora da criação via GETDATE().

  • RecModifiedDate: será atualizada via trigger.




💠 Para criar regra com Trigger para Atualização Automática


ree



Usamos uma trigger para automatizar a atualização dos campos quando um registro é modificado:


CREATE TRIGGER tr_funcionarios_update

ON funcionarios

AFTER UPDATE

AS

BEGIN

  UPDATE f

  SET

    RecModifiedBy = SUSER_SNAME(),

    RecModifiedDate = GETDATE()

  FROM funcionarios f

  INNER JOIN inserted i ON f.ID = i.ID;

END;

GO


  • O AFTER UPDATE garante que toda alteração dispare a atualização automática dos campos de auditoria.

  • A função inserted contém os valores novos que foram atualizados.




💠Exemplo de uso inserindo dados:


INSERT INTO funcionarios (nome, idade, RecCreatedBy, RecModifiedBy)

VALUES

  ('Amanda', 26, SUSER_SNAME(), NULL),

  ('Pedro', 14, SUSER_SNAME(), NULL),

  ('Vitor', 13, SUSER_SNAME(), NULL);


ree


💠Exemplo de uso alterando dados:


ree

UPDATE funcionarios

SET idade = 24

WHERE nome = 'Pedro';

-- Trigger encarrega-se de ajustar RecModifiedBy e RecModifiedDate


ree



💠Boas práticas


  • Separar lógica de auditoria: modularize o código, criando funções ou procedimentos para manter organização.

  • Padrão de usuário: prefira ORIGINAL_LOGIN() ou SUSER_SNAME() para precisão, especialmente em cenários com impersonation.

  • Use SYSUTCDATETIME() para capturar data/hora UTC e evitar ambiguidades de fuso horário.

  • Validação de dados via constraints: se você não quiser permitir valores nulos em RecModifiedBy/RecModifiedDate, utilize NOT NULL ou triggers que garantam preenchimento.

  • Espelho para auditoria completa: crie uma tabela de histórico (log_funcionarios) armazenando todos os estados anteriores para análise futura ou trobleshooting.

  • Considerar CREATE OR ALTER TRIGGER: facilita atualizações do código sem precisar dropar a trigger antes.

© 2017-2025  Criado e desenvolvido por Amanda Nascimento

  • Discord
  • GitHub
  • youtube
  • LinkedIn Amanda
bottom of page