0

MySQL ワークベンチにコミットされていない変更が表示されるのはなぜですか?

-- create a new empty table
DROP TABLE IF EXISTS X;
CREATE TABLE X (val varchar(10));

-- disable autocommit
SET AUTOCOMMIT = 0;

-- insert a row without committing
INSERT INTO X (val) VALUES ('text');

この時点で

SELECT @@autocommit, @@tx_isolation;

戻り値

| | 0 | 反復可能読み取り |

ただし、クエリはまだコミットされていない値を示しています。

SELECT * FROM X;

| | テキスト |

MySQL がコミットされていないデータを含む結果セットを返すのはなぜですか?

を使用してトランザクションをロールバックすると

ROLLBACK;

その後、MySQL は X を照会するときに空のテーブルを返します (これは、ある時点でトランザクションが自動的にコミットされていないことを確認します)。

4

1 に答える 1