Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL avec des contraintes de suppression logicielle, de clé unique et de clé étrangère

Ajouter une contrainte unique sur les champs (nom d'utilisateur, supprimé) Changer le type de champ pour 'supprimé' en INTEGER.

Pendant l'opération de suppression (cela peut être fait dans le déclencheur ou dans une partie du code où vous devez réellement supprimer l'utilisateur), copiez la valeur du champ id dans le champ supprimé.

Cette approche vous permet :

  • conserver des noms uniques pour les utilisateurs actifs (supprimé =0)
  • autoriser la suppression d'utilisateurs avec le même nom d'utilisateur plusieurs fois

Le champ "Supprimé" ne peut pas avoir que 2 valeurs car le scénario suivant ne fonctionnera pas :

  1. vous créez l'utilisateur 'Sam'
  2. L'utilisateur Sam est supprimé
  3. Vous créez un nouvel utilisateur avec le nom d'utilisateur 'Sam'
  4. Vous essayez de supprimer l'utilisateur avec le nom d'utilisateur 'Sam' - échec. Vous avez déjà enregistré userName ='Sam' et supprimé ='1'