2013-06-21 65 views
0

爲什麼MySQL工作臺顯示未提交的更改?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; 

那麼當查詢X. MySQL的返回一個空表的事務(也證實,該交易尚未自動在某個時間點犯下的。)

+0

這與MySQL工作臺無關,它是Transaction/Commit的意思。所有的SQL服務器都這樣做。關鍵是你已經插入了新的價值,只是你沒有承諾改變。 – Aron

+0

好的,但隔離級別「可重複讀取」高於「讀取已提交」級別。爲什麼我可以看到未提交的更改? – nrainer

回答

0

原因是我總是在同一個事務中(不管窗口選項卡)。

相關問題