InnoDB Transactions tx_isolation = REPEATABLE-READ

slach

Новичок
InnoDB Transactions tx_isolation = REPEATABLE-READ

заранее прощу прощения за кусок копипаста и довольно ламерский вопрос, я посторался упростить код как можно сильнее

суть кода
делается ДВА КОННЕКТА к одной базе

в первом коннекте
* создается таблица 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());


?>
 

Wicked

Новичок
отправлю тебя в ман читать насчет четвертого аргумента [m]mysql_connect[/m] :)
 

slach

Новичок
блиааа... =))) спасибо

а как тогда этот new Link сделать через PDO например??
щас попробую код на PDO переписать
 

Wicked

Новичок
Про PDO не знаю, и с наскоку ничего похожего не нашел. Так что думаю, что там этой "фичи" попросту нету.
 
Сверху