Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL mit Soft-Deletion, Unique Key und Foreign Key Constraints

Eindeutige Einschränkung für Felder hinzufügen (Benutzername, gelöscht) Ändern Sie den Feldtyp für „gelöscht“ in INTEGER.

Während des Löschvorgangs (dies kann im Trigger oder in einem Teil des Codes erfolgen, in dem Sie den Benutzer tatsächlich löschen müssen) kopieren Sie den Wert des ID-Felds in das gelöschte Feld.

Dieser Ansatz ermöglicht Ihnen:

  • eindeutige Namen für aktive Benutzer behalten (gelöscht =0)
  • mehrmaliges Löschen von Benutzern mit demselben Benutzernamen zulassen

Das Feld „Gelöscht“ darf nicht nur 2 Werte haben, da das folgende Szenario nicht funktioniert:

  1. Sie erstellen den Benutzer „Sam“
  2. Benutzer Sam wird gelöscht
  3. Sie erstellen einen neuen Benutzer mit dem Benutzernamen „Sam“
  4. Sie versuchen, den Benutzer mit dem Benutzernamen „Sam“ zu löschen – fehlgeschlagen. Sie haben bereits einen Datensatz userName ='Sam' und delete ='1'