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

PHPでMySQLINNODB行をロックする

    $mysqli->autocommit(FALSE);
    $mysqli->query("BEGIN;");
    $mysqli->multi_query("SELECT id FROM links WHERE id > (SELECT value FROM meta WHERE name='scan' FOR UPDATE) LIMIT 1000;UPDATE meta SET value=value+1000 WHERE name='scan';");
    $mysqli->commit();
    

    これは複雑な問題です。ロックとトランザクションレベルですが、上記の魔法はBEGINでした 声明。これがないと、各ステートメントは独自のトランザクションレベルで実行され、FOR UPDATE ロックのロックが早すぎました。



    1. Oracleで主キーを持つ重複行を削除する6つの方法

    2. hive.HiveImport:失敗:SemanticException [エラー10072]:データベースが存在しません:

    3. ハイブリッドクラウドセットアップでのMariaDBの実行

    4. SQL-日時形式の変換