slach
Новичок
InnoDB Transactions tx_isolation = REPEATABLE-READ
заранее прощу прощения за кусок копипаста и довольно ламерский вопрос, я посторался упростить код как можно сильнее
суть кода
делается ДВА КОННЕКТА к одной базе
в первом коннекте
* создается таблица type=InnoDB
* стартуется транзакция первого коннекта
* стартуется транзакция второго коннекта
* делается INSERT в первом коннекте в таблицу innoDB
после этого во втором коннекте ДО COMMIT в первом
* делается выборка из таблицы куда делался INSERT в первом
вопрос, ПОЧЕМУ я получаю в этом коде результат
???
каким образом второй коннект получает доступ к записи из первого коннекта??? INSERT это ведь не IMCLICIT COMMIT STATEMENT
кто нибудь из знающих покажите где читать мануал на эту тему???
собственно сам PHP код который воспроизводит ситуацию
заранее прощу прощения за кусок копипаста и довольно ламерский вопрос, я посторался упростить код как можно сильнее
суть кода
делается ДВА КОННЕКТА к одной базе
в первом коннекте
* создается таблица type=InnoDB
* стартуется транзакция первого коннекта
* стартуется транзакция второго коннекта
* делается INSERT в первом коннекте в таблицу innoDB
после этого во втором коннекте ДО COMMIT в первом
* делается выборка из таблицы куда делался INSERT в первом
вопрос, ПОЧЕМУ я получаю в этом коде результат
PHP:
SELECT BEFORE TRANSACTION COMMIT
array(1) {
["id"]=>
string(1) "1"
}
SELECT AFTER TRANSACTION COMMIT
array(1) {
["id"]=>
string(1) "1"
}
каким образом второй коннект получает доступ к записи из первого коннекта??? INSERT это ведь не IMCLICIT COMMIT STATEMENT
кто нибудь из знающих покажите где читать мануал на эту тему???
собственно сам PHP код который воспроизводит ситуацию
PHP:
<?php
$sql1=mysql_connect('localhost','root') or die('Error: '.mysql_error());
$sql2=mysql_connect('localhost','root') or die('Error: '.mysql_error());
mysql_select_db('tmp_database',$sql1) or die('Error: '.mysql_error());
mysql_select_db('tmp_database',$sql2) or die('Error: '.mysql_error());
mysql_query('CREATE TABLE t1 (id INTEGER) Type=InnoDB DEFAULT CHARSET=utf8',$sql1) or die('Error: '.mysql_error());
mysql_query('START TRANSACTION',$sql1) or die('Error: '.mysql_error());
mysql_query('START TRANSACTION',$sql2) or die('Error: '.mysql_error());
mysql_query('INSERT INTO t1 VALUES(1)',$sql1) or die('Error: '.mysql_error());
$q=mysql_query('SELECT * FROM t1',$sql2) or die('Error: '.mysql_error());
echo "\nSELECT BEFORE TRANSACTION COMMIT\n";
var_dump(mysql_fetch_assoc($q));
mysql_query('COMMIT',$sql1) or die('Error: '.mysql_error());
mysql_query('COMMIT',$sql2) or die('Error: '.mysql_error());
$q=mysql_query('SELECT * FROM t1',$sql2) or die('Error: '.mysql_error());
echo "\nSELECT AFTER TRANSACTION COMMIT\n";
var_dump(mysql_fetch_assoc($q));
mysql_query('DROP TABLE t1',$sql2) or die('Error: '.mysql_error());
mysql_close($sql1) or die('Error: '.mysql_error());
mysql_close($sql2) or die('Error: '.mysql_error());
?>