Ich habe in einer MySQL-Tabelle zwei Felder vom Typ Timestamp. Definiert wurden sie ohne zusätzliche Parameter, automatisch hat MySQL daraus gemacht: "TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP" Diese Tabelle dient der "Verwaltung" von QR-Codes als Wertmarken. Timestamp_1 enthält (zunächst) Datum/Zeit, als der Code erzeugt und ausgedruckt wurde, Timestamp_2 Datum/Zeit wenn der Code gescannt und entwertet wurde. Blöderweise ändert sich das Erstellungsdatum automatisch mit, wenn das Entwertungsdatum per Update in den Datensatz eingetragen wird. Warum das so ist, ist mir schon klar, siehe "... ON UPDATE ...". Leider gibt es keine Option, um es auf "... ON CREATE ..." zu setzen, oder doch? Falls nicht anders möglich, kann ich natürlich die DEFAULT-Option ganz rausnehmen und die beiden Timestamps quasi "zu Fuß" schreiben lassen, wollte aber hier vorher mal fragen, ob jemand evtl. noch eine andere Option kennt, bevor ich mein Programm nochmal ändere ... Danke für Tips.
:
Bearbeitet durch User
Hallo Frank, gib einfach beim ersten Anlegen des Datensatzes NICHTS für das Feld "TIMESTAMP" an! Dann wird (gemäß obiger Definition des DEFAULT-Wertes) der aktuelle Zeitpunkt eingesetzt =;-) Das "ON UPDATE" lässt Du einfach weg. Somit ändert MySQL auch später nichts mehr automatisch. Letztlich definiert MySQL sowas meiner Kenntnis nach nicht von selbst so, wie Du es oben geschrieben hast. Ich nehme eher an, dass Du irgendwo ein "Kreuzchen" zu viel oder zu wenig gesetzt hattest =;-) Gruß Thomas
Thomas V. schrieb: > Letztlich definiert MySQL sowas meiner Kenntnis nach nicht von selbst > so, wie Du es oben geschrieben hast. Ich nehme eher an, dass Du irgendwo > ein "Kreuzchen" zu viel oder zu wenig gesetzt hattest =;-) > Danke für den Hinweis. Ich habe die Tabelle unter PHPMyAdmin angelegt, vielleicht hat der die zusätzliche Option ohne mein Zutun geschaltet. Leider ist die geannte Tabelle schon in intensiver Beutzung, so dass ich sie nicht einfach neu anlegen kann ... ich mach mir mal eine extra Test-Tab ...
Frank E. schrieb: > Leider ist die geannte Tabelle schon in intensiver Beutzung, so dass ich > sie nicht einfach neu anlegen kann Mit "ALTER TABLE ..." kann man die Tabellenstruktur auch während der Nutzung ändern =;-) Solange die Felder vorher und hinterher dieselben Datentypen ("TIMESTAMP") haben, ist auch kein Datenverlust zu befürchten. Viel Erfolg beim Testen!
Hallo, Frank E. schrieb: > Ich habe die Tabelle unter PHPMyAdmin angelegt, > vielleicht hat der die zusätzliche Option ohne mein Zutun geschaltet. PHPMyAdmin zeigt beim Erstellen oder anlegen einer Spalte doch alls zugehörige an, auch das Attribut der Spalte. Wenn ich in einer bestehenden Tabelle auf Struktur gehe, bekomme ich die Werte auch angezeigt. Mit Bearbeiten auf der Spalte kann man sie dort auch ändern, eben Attribut auf "nichts". Kopie einer Tabelle bekommt man unter "Operationen" mit Kopiere Tabelle auch in kurzer Zeit (je nach Tabellengröße). Ändern des Attributs in Deinem Fall verändert die Inhalte nicht, ab sofort wird eben bei Update der timestamp nicht mehr geändert. Gruß aus Berlin Michael
Michael U. schrieb: > PHPMyAdmin zeigt beim Erstellen oder anlegen einer Spalte doch alls > zugehörige an, auch das Attribut der Spalte. Wenn ich in einer ... Ja, danke. Ich habe unter PHPMyAdmin per SQL angelegt: "create table ...", da sieht man keine zus. Optionen.
:
Bearbeitet durch User
Hallo, Frank E. schrieb: > Michael U. schrieb: > >> PHPMyAdmin zeigt beim Erstellen oder anlegen einer Spalte doch alls >> zugehörige an, auch das Attribut der Spalte. Wenn ich in einer ... > > Ja, danke. Ich habe unter PHPMyAdmin per SQL angelegt: "create table > ...", da sieht man keine zus. Optionen. Per SQL mache ich das nur aus Scripten und damit recht selten. Beim Testen schaue ich da dann sowieso noch mit PHPMyAdmin rein. Ansonsten siegt die Bequemlichkeit und damit die Benutzung von PHPMyAdmin bei mir... Meine Lieblingsecke ist bei varchar() eine falsche Kollation die mir dann beim testen auffällt. Gruß aus Berlin Michael
Hier selbiges Problem: Mit PhpMyAdmin 5.0.4.deb2 unter MariaDB 10.5.19 tritt dieser Fehler auf. Bei Neu anlegen einer Tabelle mit Timestamp, sowie bei Änderung einer Tabelle mit einer neuen Timestamp Zeile. Egal was man mit der Zeiten macht oder in den Dropdowns macht: es kommt immer ein Timestamp mit "ON UPDATE CURRENT_TIMESTAMP" hinzu. Einzigster Workaround, welchen ich machen konnte: direktes anlegen einer Spalte per SQL Code.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.