[MySQL] Automatisches Löschen durch Eintreffen einer Bedingung möglich?

Gast #2147627
Ich versuche mein Problem mal möglichst einfach darzustellen:

NUTZER können OBJEKTE auf EINHEITEN anwenden. Aus Statistikgründen 
möchte ich mir merken, welcher Nutzer welches Objekt auf welche Einheit 
angewendet hat.
Ich habe nun eine Tabelle der folgenden Art (vereinfacht):

Tabelle OBJEKTE_BENUTZT:

id | objekt_id | benutzt_von | angewendet_auf | timestamp

benutzt_von ist ein Fremdschlüssel auf den Nutzernamen in der 
Nutzertabelle und wird auf NULL gesetzt wenn der Nutzer gelöscht wird.
(ON DELETE SET NULL)

angewendet_auf ist ein Fremdschlüssel auf die Einheiten-ID in der 
Einheitentabelle und wird auf NULL gesetzt wenn die Einheit gelöscht 
wird.
(ON DELETE SET NULL)

Das mache ich weil ich mir die Statistik sowohl pro Nutzer als auch pro 
Einheit merken will, und das eine auch ohne das andere existieren kann, 
da Einheiten unter Nutzern gehandelt werden können.

(Wieviele OBJEKTE hat der NUTZER schon eingesetzt?
Wieviele OBJEKTE wurden auf die EINHEIT schon angewendet?)

Erst wenn beides verschwindet - also auf NULL gesetzt wird - hat der 
Eintrag keinen Aussagewert mehr und soll daher aus der Tabelle 
OBJEKTE_BENUTZT gelöscht werden.

Meine bisherige Lösung ist einfach in regelmäßigen Abständen mit einem 
"DELETE FROM OBJEKTE_BENUTZT WHERE benutzt_von = NULL AND angewendet_auf 
= NULL" die überschüssigen Einträge zu löschen.

Daher wollte ich wissen ob es eine Möglichkeit gibt, dass der Eintrag 
automatisch verschwindet, sobald beide Felder auf NULL gesetzt werden.
Gast
keine Ahnung ob das bei mysql geht, aber schau dir mal trigger an. Du 
kannst ein update-Trigger auf die Tabelle legen und dort macht du dein 
delete statement rein.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.