Sven Rautenberg: MySQL Referentielle Integrität

Beitrag lesen

Moin!

ich habe in einer Datenbank Datensätze stehen, und möchte ein Flag ("geändert") auf 1 setzen, damit ich bzw. mein Spider später erkennt, dass er diesen Datensatz für die Suche neu indexieren soll.

Dann setze das Flag beim UPDATE einfach auf 1 und setze es später auf 0 zurück, wenn dein Indexer vorbeikommt.

Ist natürlich ein ziemlicher Extraaufwand, denn mit einem Timestamp (das erste Feld vom Typ TIMESTAMP in einer Tabelle aktualisiert sich automatisch bei INSERT oder UPDATE in diesem Datensatz) und einem Indexer, der sich merkt, wann er zuletzt gelaufen ist, könntest du automatisch alle Datensätze finden, die NACH diesem Zeitpunkt geändert wurden, ohne sie dann manuell im Flag wieder auf 0 setzen zu müssen.

Mit ON UPDATE kann ich den aktuellen Timestamp setzen, ich möchte hier aber nur eine 0 oder eine 1 stehen haben. Ist das überhaupt möglich, wenn ja wie?

ON UPDATE setzt die Verwendung der InnoDB-Engine voraus, MySQL unterstützt ansonsten keine referentielle Integrität, und das, was du willst, hat damit auch nichts zu tun.

- Sven Rautenberg