Chegando um pouco atrasado, mas enfim...
Pra que complicar?
Sério que nenhuma IA te mostrou o mais óbvio e simples? Segue um exemplo em MySQL:
CREATE TABLE TEST (
id INT NOT NULL PRIMARY KEY,
value VARCHAR(10),
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP
);
Pronto, sem trigger nem complicações desnecessárias, apenas a definição de colunas com valores default na inserção ou atualização.
No caso, created_at
não pode ser nulo, então se vc não informar um valor no INSERT
, ele usará a data atual. Ou seja, se eu fizer:
INSERT INTO TEST(id, value) VALUES (1, 'abc');
A tabela ficará assim:
id | value | created_at | updated_at |
---|
1 | abc | 2025-04-02 10:56:12 | |
Repare que eu não informei o created_at
, então ele assume o valor default, que é a data atual (CURRENT_TIMESTAMP
).
Já updated_at
pode ser nulo, e somente no UPDATE
ele é setado para a data atual.
Ou seja, se seu fizer:
UPDATE test SET value='xyz' WHERE id=1;
Agora a tabela fica assim:
id | value | created_at | updated_at |
---|
1 | xyz | 2025-04-02 10:56:12 | 2025-04-02 11:00:05 |
Repare que o campo updated_at
não foi informado no UPDATE
, sendo assim ele é automaticamente alterado para o valor definido na definição da coluna (que no caso também é a data atual).
E pronto. Outros bancos também possuem este recurso, talvez mude um pouquinho a sintaxe, mas a ideia é a mesma: na própria definição da tabela, informar os valores default para inserção ou atualização. Eu usaria triggers somente se o banco não tivesse tal recurso (alguns possuem somente para inserção, por exemplo), caso contrário estaria complicando à toa (ou, se o sistema for muito simples, setar as datas manualmente mesmo).
Por fim, sobre o uso de IA's: se nenhuma te sugeriu isso, talvez seja porque elas ainda não estão tão boas assim, ou então vc que não soube fazer a pergunta correta (não dá pra saber qual foi, e talvez seja até uma combinação de ambos).