Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak zapobiec duplikowaniu rekordów w mojej bazie danych podczas aktualizacji rekordów?

Jeśli Twoja aplikacja obsługuje wielu użytkowników, musisz upewnić się, że zmiany nie zostały wprowadzone przez innego użytkownika między sprawdzeniem duplikatów a aktualizacją bazy danych.

Najłatwiej to zrobić, zgodnie z sugestią mbeckish, utworzyć ograniczenie UNIQUE w kolumnie tytułowej:

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

Silnik bazy danych wymusza wtedy unikatowe tytuły, a klient może obsłużyć opinie użytkowników, przechwytując każdy wyjątek naruszenia ograniczeń:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. WSTAW bieżącą datę lub godzinę do MySQL

  2. Oracle MERGE i przygotowane zestawienie

  3. dodaj tymczasową kolumnę z wartością

  4. MySQL — jeśli zaczyna się od cyfry lub znaku specjalnego

  5. Nie można połączyć się z lokalnym serwerem MySql przez gniazdo '/run/mysqld/mysqld.sock' (2)