Linuchs: mySQL: timestamp bei INSERT?

Moin,

ich möchte Datum und Zeit der Neuerfassung eines Datensatzes speichern.

Gefunden habe ich den CURRENT_TIMESTAMP als Standard eines Satzes.

Ist aber nicht zulässig, da ich schon ein Feld habe für on update CURRENT_TIMESTAMP

Muss ich das nun per Programm setzen?

Linuchs

  1. Hallo

    Du kannst im INSERT auch das betreffende Feld explizit auf NOW() setzen. Damit wird der Zeitpunkt der Ausführung im Feld festgehalten.

    Tschö, Auge

    --
    Wenn man ausreichende Vorsichtsmaßnahmen trifft, muss man keine Vorsichtsmaßnahmen mehr treffen.
    Toller Dampf voraus von Terry Pratchett
    1. Du kannst im INSERT ...

      Okay, da muss ich ins PHP Programm eingreifen. Die DB allein macht's nicht.

      Linuchs

  2. Hello,

    MySQL:
    Wenn Du sowohl Create-Date, als auch Update-Date automatisieren willst, hilft Dir fürs Create-Date ein Trigger.

    Liebe Grüße
    Tom S.

    --
    Es gibt nichts Gutes, außer man tut es
    Andersdenkende waren noch nie beliebt, aber meistens diejenigen, die die Freiheit vorangebracht haben.
    1. Tach!

      Wenn Du sowohl Create-Date, als auch Update-Date automatisieren willst, hilft Dir fürs Create-Date ein Trigger.

      Oder für das Update-Datum. Je nachdem, wie das andere Feld definiert ist, mit oder ohne ON UPDATE CURRENT_TIMESTAMP.

      Der Trigger ist eine nette Methode, um sich nicht mehr um das Feld kümmern zu müssen, oder um es nicht zu vergessen. Aber auch eine nicht ganz einfache, weil man meistens erstmal die Trigger-Geschichte lernen muss, oder nochmal nachschlagen, weil man es wieder vergessen hat. NOW() und dessen Synonyme sind da erstmal einfacher anzuwenden.

      dedlfix.

      1. Hello,

        Ich verwende ohnehin für Select, Insert, Update und Delete am liebsten Stored Routines, da man dann der API den direkten Zugriff auf die Tabellen entziehen kann und ihr nur die (gekapselten) Funktionen zugänglich macht. Das hat den Vorteil, dass niemand Queries absetzen kann, die nicht vorgesehen sind und ich auch für Select eine Historie schreiben kann.

        Außerdem kann man so auch vertikale Rechte berücksichtigen.

        Wenn es nur um den einen Trigger geht, dann hilft da immer gerne wieder ein GUI, wie z. B. HeidiSQL. Da sind es zwei bis drei Klicks, und eine Zeile Tippen und der Trigger ist erstellt/angepasst und mit dem Klick auf "Create Code anzeigen" hat man ihn dann auch gleich im Klartext, mit Ausnahme der Delimiters-Anweisungen. Die müsste man dan für eine programmierte Erstellung oder in der "Localhost-Shell" noch hinzufügen.

        Beachten sollte man nur, dass man für Triggers und Stored Routines gleich bei der Planung einer MySQL-Applikation die User für den Ersteller festlegt und den Usern, die die Trigger und Stored Routines verwenden sollen, dieses Recht auch einräumt. Mehr dazu aber in meiner Zusammenstellung für's Wiki, wenn sie dann mal fertig wird ;-)

        Liebe Grüße
        Tom S.

        --
        Es gibt nichts Gutes, außer man tut es
        Andersdenkende waren noch nie beliebt, aber meistens diejenigen, die die Freiheit vorangebracht haben.