mysql Tabelle überprüfen auf neue Einträge

stefkey

Member
Hallo,

ich müsste auf meinem vServer die Datenbank auf einen speziellen Eintrag überprüfen. Sowas wie: ist in der letzten Minuten in der Tabelle x ein neuer Eintrag hinzugekommen? In der Tabelle gibt es ein paar Spalten, einer davon ist eine forlaufend, vielleicht kann man das gebrauchen bei der Abfrage?

Kann mir hier jemand einen Ansatz geben?
 
Da gäbe es mehrere Ansätze. Wenn du nur neue Einträge wissen willst, könntest du in einer getrennten Tabelle oder applikations-intern die letzt-gesehene ID vom Autoincrement abspeichern und dort weiterfahren.

Alternativ kannst du ein DateTime-Field (ab Mysql 5.6.x) oder Timestamp beisetzen welches NOW als Default-Wert hat.
=> http://stackoverflow.com/questions/168736/how-do-you-set-a-default-value-for-a-mysql-datetime-column

Dann bliebe auch noch die Möglichkeit dazu ein INSERT-Trigger zu verwenden
=> http://stackoverflow.com/questions/1138928/mysql-set-current-date-in-a-datetime-field-on-insert
 
ah okay, danke. Klingt aber so als wenn ich dann an der Stelle im Code arbeiten muss wo diese neuen Zeilen in die DB eingetragen werden. Nehmen wir mal an ich kann/will da nicht ran, einen sql-Befehl der mir die zuletzt eingetragenene Zeile bzw eine bestimmte Zelle daraus zurück gibt es nicht, oder?
Dann bräcuhte ich ja nur noch den timestamp dieses Eintrages auszulesen (der in einer anderen Tabelle vlt zu finden ist) und dann käme ich doch auch weiter, oder?
 
ha! Ich habe eine Tabelle in der die gesuchte userID drin ist und in der es auch eine Spalte mit einem Timestamp gibt. D.h. ich kann doch aus dieser Tabelle die userID rausnehmen die unnerhalb der letzten Minute in die DB eingetragen worden sind. Das wäre doch dann eine sql Abfrage, wie müsste die im Prinzip aussehen?
 
ah okay, danke. Klingt aber so als wenn ich dann an der Stelle im Code arbeiten muss wo diese neuen Zeilen in die DB eingetragen werden.
Alle 3 Vorschläge setzen keine Änderung im Quellcode voraus und beziehen sich allein auf die Datenbank. Mal so als Frage: hast du die Links überhaupt angeschaut :confused:

Das wäre doch dann eine sql Abfrage, wie müsste die im Prinzip aussehen?
Ohne die Details deiner Datenbank zu kennen, sollte das hier klappen:
SELECT `userID` FROM `tabelle` WHERE `timestamp` > NOW() - INTERVAL 1 MINUTE
 
Wenn es nicht MySQL sein muss, sondern auch MsSQL ausreicht, gäbe es die Möglichkeit der "Change Notification"
 
Da er ja eine vorhandene Applikation nicht umprogrammieren will und die Datenbank ja schon vorhanden ist, ist MS SQL-Server wohl keine Alternative.
Außerdem läßt sich eine Change-Notification IIRC unter MySQL auch per Trigger nachbauen, was d4f ja oben schon genannt hat.
 
Vielen Dank!

@df4 Die Links habe ich geöffnet und schnell wieder geschlossen, also nicht angeschaut. Ich werde das nachholen!

Das schau ich mir nun alles nächste Woche mal an.
Danke vorerst mal, damit komm ich sicher zurecht!
Ich berichte wie meine Lösung ist/war.

Viele Grüße, stefkey
 
Back
Top