Kabul edilmiş bir cevap olmasına rağmen doğru cevap olduğunu düşünmüyorum. Gerekli olanı elde etmenin en basit yoludur, ancak InnoDB'de zaten etkin olsa bile (aslında dokümanlar size hala NULL almanız gerektiğini söyler ...), MySQL belgelerini okursanız , UPDATE_TIME kullanarak bile doğru seçenek değil, çünkü:
Sunucu yeniden başlatıldığında veya tablo InnoDB veri sözlüğü önbelleğinden çıkarıldığında zaman damgaları kalıcı olmaz.
Doğru anlıyorsam (şu anda sunucuda doğrulayamıyorum), sunucu yeniden başlatıldıktan sonra zaman damgası sıfırlanır.
Gerçek (ve, iyi, maliyetli) çözümlere gelince, Bill Karwin'in CURRENT_TIMESTAMP ile çözümüne sahipsiniz ve tetikleyicilere dayanan farklı bir tane önermek istiyorum (bunu kullanıyorum).
Genel değişkenler (burada zaman damgaları) için bir depolama alanı gibi çalışacak ayrı bir tablo oluşturarak (veya belki de bu amaçla kullanılabilecek başka bir tablonuz var) başlarsınız. İki alan - tablo adı (veya burada tablo kimliği olarak tutmak istediğiniz herhangi bir değer) ve zaman damgası depolamanız gerekir. Elinize geçtikten sonra, bu tablo kimliği + başlangıç tarihi ile başlatmalısınız (ŞİMDİ () iyi bir seçimdir :)).
Şimdi, gözlemlemek istediğiniz tablolara geçersiniz ve bu veya benzer prosedürle INSERT / UPDATE / DELETE SONRASI tetikleyiciler eklersiniz:
CREATE PROCEDURE `timestamp_update` ()
BEGIN
UPDATE `SCHEMA_NAME`.`TIMESTAMPS_TABLE_NAME`
SET `timestamp_column`=DATE_FORMAT(NOW(), '%Y-%m-%d %T')
WHERE `table_name_column`='TABLE_NAME';
END