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

MySQLでSelectforUpdateをテストする方法

    2つのmysqlクライアントセッションを開きます。

    セッション1:

    mysql> start transaction;
    
    mysql> SELECT * FROM table_name WHERE cond FOR UPDATE;
    
    ... (result here) ...
    
    1 row in set (0.00 sec)
    

    セッション2:

    mysql> start transaction;
    
    mysql> SELECT * FROM table_name WHERE cond FOR UPDATE;
    
    ... (no result yet, will wait for the lock to be released) ...
    

    セッション1に戻り、選択したレコードを更新します(そしてロックを解除します):

    mysql> UPDATE table_name SET something WHERE cond;
    
    mysql> commit;
    

    セッション2に戻る:

    1)ロックタイムアウトエラーが表示されている

    ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
    

    2)または結果を表示する

    ... (result here) ...
    
    1 row in set (0.00 sec)
    

    3)または結果が表示されない(対応するレコードが変更されたため、指定された条件が満たされていないため)

    Empty set (0.00 sec)
    


    1. SQLJOINとCOUNTの使用

    2. JDBCプリペアドステートメントを使用したSQL1064構文エラー

    3. PHPMySQLの検索と関連性による順序付け

    4. Azureの自動化メソッド