sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo evito registros duplicados en mi base de datos mientras actualizo registros?

Si su aplicación es compatible con varios usuarios, debe asegurarse de que otro usuario no realice cambios entre la comprobación de duplicados y la actualización de la base de datos.

La forma más fácil de hacer esto es, como sugirió mbeckish, crear una restricción ÚNICA en la columna del título:

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

El motor de la base de datos aplicará títulos únicos y su cliente podrá gestionar los comentarios de los usuarios detectando cualquier excepción de infracción de restricción:

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();
    }
}