timestamp von DELETE
Rudi
- datenbank
0 King^Lully0 Tom
Hi,
MySQL 5.0.32 Debian
Habe in jedem Datensatz ein Feld last_modified (timestamp) und hole mir die letzte Änderung mit max(last_modified).
Das klappt natürlich bei Löschungen nicht.
Wird irgendwo eine Zeit in den Systemdaten der Tabelle bei DELETE vermerkt?
Gruß, Rudi
Habe in jedem Datensatz ein Feld last_modified (timestamp) und hole mir die letzte Änderung mit max(last_modified).
Das klappt natürlich bei Löschungen nicht.
Wird irgendwo eine Zeit in den Systemdaten der Tabelle bei DELETE vermerkt?
Du willst wohl sowas wie Historisierung realisieren. Recherchiere dementsprechend. Von Systemtabellen würde ich die Finger lassen.
Hello Rudi,
Löschen ist sowieso teuer, insbesondere, wenn Indexe auf der Tabelle liegen.
MySQL ist positiv optimiert, das bedeutet, dass das Hinzufügen von Daten sehr schnell geht, das Wegnehmen mehr Zeit in Anspruch nimmt.
Vielleicht kommt es für die in Frage, dass Du es so ähnlich machst, wie dBase.
Da müsstest Du nur Deine Abfragen entsprechend umbauen.
Sezte nur eine Löschmarkierung und unterdrücke die gelöschten Sätze, bis sie dann wirklich gelöscht werden. Damit könntest Du nämlich beim "Löschen" den last_modified ganz normal führen. Danach haben "normale Benutzer" keinen Zugriff mehr auf den Datensatz; somit würde dort automatisch "deleted_time" drinstehen.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hello Tom,
Sezte nur eine Löschmarkierung und unterdrücke die gelöschten Sätze, bis sie dann wirklich gelöscht werden.
Hmm, ist eine Idee, danke.
Rudi
Hello,
Sezte nur eine Löschmarkierung und unterdrücke die gelöschten Sätze, bis sie dann wirklich gelöscht werden.
Hmm, ist eine Idee, danke.
Die alternative ist ein Trigger
http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html
INSERT: The trigger is activated whenever a new row is inserted into the table; for example, through INSERT, LOAD DATA, and REPLACE statements.
UPDATE: The trigger is activated whenever a row is modified; for example, through UPDATE statements.
DELETE: The trigger is activated whenever a row is deleted from the table; for example, through DELETE and REPLACE statements. However, DROP TABLE and TRUNCATE statements on the table do not activate this trigger, because they do not use DELETE. See Section 13.2.9, “TRUNCATE Syntax”.
Dann müsste man eine weitere Tabelle dafür vorhalten, in der die Löschmeldung "Wer, wann, was, von wo" inserted wird.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom