Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como evito registros duplicados em meu banco de dados durante a atualização de registros?


Se seu aplicativo oferece suporte a vários usuários, você precisa garantir que as alterações não sejam feitas por outro usuário entre a verificação de duplicatas e a atualização do banco de dados.

A maneira mais fácil de fazer isso é como sugerido por mbeckish, crie uma restrição UNIQUE na coluna de título:
ALTER TABLE maindatabase.animelist 
ADD CONSTRAINT U_animelist_TitleAnime UNIQUE (TitleAnime)

O mecanismo de banco de dados aplicará títulos exclusivos e seu cliente poderá lidar com o feedback do usuário capturando qualquer exceção de violação de restrição:
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();
    }
}