Alle Referenzen automatisch löschen -möglich?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Alle Referenzen automatisch löschen -möglich?

    Aiii -jetzt suche ich schon seit Tagen im ganzen Web und finde einfach keine Antwort. Folgendes ist mein Problem:

    Ich habe eine Tabelle, in der viele User stehen:

    TABELLE 'USERS'
    ID (PRIMARY KEY) | Name

    und viele weitere Tabellen, in denen Daten abgelegt sind, die zu jeweils einem der User gehören, so z.B.

    TABELLE 'HOMEPAGES'
    ID | USER-ID | URL

    Es beziehen sich also viele Fremdschlüssel in anderen Tabellen auf jeweils eine der USER-IDs. Wenn ich aber jetzt einen User aus der Liste lösche, habe ich viele Daten, die quasi einen nicht mehr gültigen Fremdschlüssel aufweisen, d.h. die nicht mehr einem User zuzuordnen sind. Was mache ich nun mit all diesen Einträgen in den anderen Tabellen?

    Gibt es eine Möglichkeit, Tabellen gleich so anzulegen (oder ein spezielles Query), das alle von der User-ID abhängigen Einträge in anderen Tabellen gleichfalls gelöscht werden, wenn die zugehörige USER-ID nicht mehr existiert? Kann man das automatisieren? Wenn nicht, wie ist das -bei vielen Tabellen- am bequemsten zu managen?

    Danke im Voraus!

    Mike
    www.x-pressive.com

  • #2
    wenn du einen user löschst, kannst du dir aussuchen, ob du die anderen daten aus den tabellen löschen willst (1), oder ob du die daten behalten willst (2).

    (1)
    du musst mehrere deletes direkt nacheinander machen, damit die daten weg sind.

    DELETE FROM users WHERE userid=1
    DELETE FROM hompages WHERE userid=1


    (2)
    dein bisheriges
    DELETE FROM users WHERE userid=1
    reicht ... die anderen daten bleiben unangetastet.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Alles klar -danke dir!
      www.x-pressive.com

      Kommentar


      • #4
        hab grad noch einmal auf mysql.com geschaut...

        wenn du mysql version 4 hast, kannst du auch das nutzen
        Das Multi-Tabellen-Löschformat wird ab MySQL 4.0.0 unterstützt.
        http://www.mysql.com/doc/de/DELETE.html
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Das ist natürlich ideal -ich hatte gehofft, das MySQL so etwas kann, war mir aber nicht sicher. Da ich aber sehr viele Tabellen (mit sehr vielen Referenzen auf User-IDs) habe, wären bei so einem Multi-Löschvorgang ziemlich viele Tabellen betroffen. Da recht viele Leute auf die Tabellen zugreifen (und diese recht groß sind) befürchte ich nur, das die Performance zeitweise in den Keller sinkt.
          www.x-pressive.com

          Kommentar

          Lädt...
          X