sql >> データベース >  >> RDS >> Mysql

レコードの更新中にデータベース内のレコードの重複を防ぐにはどうすればよいですか?

    アプリケーションが複数のユーザーをサポートしている場合は、重複のチェックとデータベースの更新の間に別のユーザーが変更を加えないようにする必要があります。

    これを行う最も簡単な方法は、厄介な提案として、タイトル列にUNIQUE制約を作成することです。

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

    その後、データベースエンジンは一意のタイトルを適用し、クライアントは制約違反の例外をキャッチすることでユーザーのフィードバックを処理できます。

    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. null許容列でのハッシュ結合

    2. MySQLクエリのテスト

    3. データ生成とハードウェア品質

    4. SELECTINTOおよび宣言されていない変数エラー