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

Comment puis-je empêcher les enregistrements en double dans ma base de données lors de la mise à jour des enregistrements ?

Si votre application prend en charge plusieurs utilisateurs, vous devez vous assurer que des modifications ne sont pas apportées par un autre utilisateur entre votre vérification des doublons et la mise à jour de la base de données.

Le moyen le plus simple de procéder est, comme suggéré par mbeckish, de créer une contrainte UNIQUE sur la colonne de titre :

ALTER TABLE maindatabase.animelist 
ADD CONSTRAINT U_animelist_TitleAnime UNIQUE (TitleAnime)

Le moteur de base de données appliquera alors des titres uniques et votre client pourra gérer les commentaires des utilisateurs en interceptant toute exception de violation de contrainte :

void checkData()
{
    SuspendLayout();
    try
    {

        updateData();

    }
    catch (Exception ex)
    {
        MySqlException sqlEx = ex as MySqlExecption;
        // If there is a constraint violation error.
        // (I may have the wrong error number, please test.)
        if (sqlEx != null && sqlEx.Number == 1062) 
        {
            my = Form.ActiveForm as MyList;
            my.msg = new Message_Box();
            my.msg.Descrip.Text = "Record is already in the Database";
            my.msg.Title.Text = "Duplicate Record";
            my.msg.ShowDialog();
        } 
        else 
        {
            MessageBox.Show("" + ex);
        }
    }
    finally
    {
        ResumeLayout();
    }
}