Forum: PC-Programmierung [MySQL] Automatisches Löschen durch Eintreffen einer Bedingung möglich?


von D. I. (Gast)


Lesenswert?

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.

von Peter II (Gast)


Lesenswert?

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.

von D. I. (Gast)


Lesenswert?

Aja das ist was ich gesucht habe denke ich. Jetzt muss ich nur noch den 
Trigger richtig aufsetzen.

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
Noch kein Account? Hier anmelden.