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

ストアドプロシージャを使用したMySQLデータベースへの同時アクセス

    まず、別の投稿で述べられているように、InnoDBを使用します。これはMySQL5.5の時点でのデフォルトのストレージエンジンであり、より堅牢です。

    次に、次のページを見てください: http:// dev.mysql.com/doc/refman/5.5/en/innodb-locking-reads.html

    トランザクションが完了するまで、更新しようとしている行を他の接続が読み取らないようにするには、SELECT ...FORUPDATEを使用する必要があります。

    START TRANSACTION;
    
    SELECT value INTO @value
    FROM mytable
    WHERE id = 5
    FOR UPDATE;
    
    UPDATE mytable
    SET value = value + 1
    WHERE id = 5;
    
    COMMIT;
    

    InnoDBは行レベルのロックを行うため、これはテーブルをロックするよりも優れています。上記のトランザクションは、id =5 ...の行のみをロックするため、id=10で動作する別のクエリはこのクエリによって保持されません。



    1. 制約付きの列を削除する方法は?

    2. MySQLのMyISAMエンジンが外部キーをサポートしないのはなぜですか?

    3. 最後の個別のレコードセットを取得する

    4. SQLサーバーからHTTPリクエストを作成するにはどうすればよいですか?