Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL con eliminazione graduale, chiave univoca e vincoli di chiave esterna

Aggiungi un vincolo univoco sui campi (nome utente, eliminato) Cambia il tipo di campo per "eliminato" in INTEGER.

Durante l'operazione di eliminazione (può essere eseguita in trigger o in parte del codice in cui è necessario eliminare effettivamente l'utente) copiare il valore del campo id nel campo eliminato.

Questo approccio ti consente:

  • mantieni nomi univoci per gli utenti attivi (eliminati =0)
  • consenti di eliminare più volte utenti con lo stesso nome utente

Il campo "Eliminato" non può avere solo 2 valori perché il seguente scenario non funzionerà:

  1. crea l'utente 'Sam'
  2. L'utente Sam è stato eliminato
  3. Crea un nuovo utente witn userName 'Sam'
  4. Provi a eliminare l'utente con nomeutente 'Sam' - fallito. Hai già il record userName ='Sam' e cancellato ='1'