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

分離レベルがREAD_UNCOMMITTEDの場合、実行中のトランザクションによって挿入された行を表示できません

    私の小さなテストスクリプトでは、別のコンソールからログインした場合、コミット前にレコードが表示されません。ただし、同じセッションで挿入したばかりのレコードを選択することはできます。したがって、コミットする前に、すでにテーブルにある行にアクセスする可能性があると思いますが、コミットされる前に新しい行または変更が行われるようになりました。

    <?php
    
    require_once('db.php');
    
    q( 'drop table if exists t' );
    q( 'create table t (id integer not null auto_increment primary key, v datetime) engine=innodb' );
    
    q( 'set transaction isolation level read uncommitted' );
    q( 'start transaction' );
    q( 'insert into t (v) values (now()),(now()),(now())' );
    
    echo q1( 'count(*)', 't', 'true'); // translates to "select count(*) from t where true"; 
    // echoes "3" to the console
    
    // wait for input
    $handle = fopen ("php://stdin","r");
    $line = fgets($handle);
    
    // with a mysql client from a 2nd console at this point no new records show in table t
    
    q( 'commit' );
    
    // after this point all new records show up in table t from a 2nd session.
    



    1. SSMS 2019(v18)の拡張機能を作成する方法

    2. テーブル(日時フィールド)で最新のレコードを選択します

    3. mysqlコネクタ/c++でsetblobを使用してバイナリデータを設定するとクラッシュが発生します

    4. TomcatとMySQLがすでにマシンにインストールされているかどうかを確認します