MySQL: oluşturulmuş ve değiştirilmiş ekle alanlar

2 Cevap php

Ne MySQL oluşturulan ve değiştirilen alanları eklemek için en iyi yaklaşım:

1) on update CURRENT_TIMESTAMP gibi MySQL özellikleri kullanarak veya

2)) PHP (veya başka bir şey kullanıyor? Neden?

Cevap MySQL ise, bunu nasıl yapardınız?

2 Cevap

Bu iyi bir soru. Ben iki açıdan bakmamız gerekiyor herhalde

  • performans
  • uygulama mimarisi

Performans açısından bakıldığında zaten bir satır oluşturarak veya o satırda damgası önemsiz güncellenmesi bir satır güncellenmesi ve bu nedenle ben php ya da bir tetikleyici vasıtasıyla güncellenmesi arasında çok fark olduğunu sanmıyorum eğer.

Eğer güzel bir ORM mimariye sahip (veya Doktrini gibi bir şey kullanabilirsiniz) Eğer kaydetmek her zaman oluşturmak / modifiye damgaları güncellemek için soyut bir katmanda Kaydet () mantık üzerine yazabilirsiniz eğer bir uygulama mimarisi perspektif tetikler oldukça kolay ve php içindedir.

Ben hemen hemen ORM aracılığıyla değil, tetikleyici veya saklı procs ile benim veritabanı erişimi tüm varsa ben şahsen PHP uygulamak olacaktır.

Benim tercih TIMESTAMP gibi türü ve CURRENT_TIMESTAMP olarak varsayılan değeri ile LastChanged gibi MySQL tabloya bir sütun değiştirmek ya da eklemektir. Bir satır tabloya eklendiğinde bu yüzden tarih otomatik olarak oluşturulur.

Sonra kayıt modifiye edildikten sonra son değişiklik tarihini güncelleyeceğiz olacağı gibi SONRA UPDATE tetikleyici olabilir

    IF NEW.LastChanged = '0000-00-00 00:00:00' THEN
        SET NEW.LastChanged = NOW();
    END IF