|
|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : vitus@ice.ru 2:5020/400 22 Dec 2000 13:34:44 To : yurik shestakov Subject : Re: MySQL -------------------------------------------------------------------------------- yurik shestakov <yu@frigate.kiev.ua> wrote: ys>Serge Rodovnichenko <Serge.Rodovnichenko@f696.n5020.z2.fidonet.org> wrote: ys>Задачка: угадать результат исполнения на 3.23.latest такого кода, например: ys>use DBI; ys>my $dbh ; ys>my $in_tx = 0; ys>eval { ys> $dbh = DBI->connect('dbi:mysql:database=test;hostname=127.0.0.1;port=3306') ys> or die "Can't connect: ".$DBI::errstr; ys> $dbh->do('SET AUTOCOMMIT=0');# <<< mysql specific ys> $dbh->do('BEGIN WORK') or die "can't start TX: ".$DBI::errstr; ys> $in_tx = 1; ys> $dbh->do(q{ CREATE TABLE myTable ( id integer, str char(20) ) }) ys> or die "Can't create table: ".$DBI::errstr; ys> $dbh->do('ROLLBACK') ys> or die "Can't rollback: ".$DBI::errstr; ys> $in_tx = 0; ys> $dbh->do('SET AUTOCOMMIT=1'); # <<< mysql specific ys> $dbh->do('INSERT INTO myTable (id,str) VALUES (1,"one")') ys> or die "Can't insert: ".$DBI::errstr; ys> ys> print "Oops. Insert completed :-]\n"; ys> }; ys>if ($@) { ys> print STDERR $@; ys> $dbh->do('ROLLBACK') if $in_tx; ys> } ys>$dbh->disconnect if defined $dbh; ys>exit 0; ys>p.s. DBD::mysql не "кушает" $dbh->commit и $dbh->rollback ys>p.p.s. Hа DBD::Informix результат выполнения малость подправленного ys>кода будет таким: ys> DBD::Informix::db do failed: SQL: -206: The specified table (mytable) ys> is not in the database. А на Oracle с учетом замены mySQL-специфик операций на стандартные DBI-ные эквиваленты - отработает. Ибо в Oracle DDL-оператор (напр, create table) автоматически коммитит текущую транзакцию. И из этого, между прочим, не следует что Oracle хуже Informix. -- Victor Wagner vitus@ice.ru Chief Technical Officer Office:7-(095)-785-09-72 Communiware.Net Home: 7-(095)-135-46-61 http://www.communiware.net http://www.ice.ru/~vitus --- ifmail v.2.15dev5 * Origin: Siberian Internet Company (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/23183140d05e8.html, оценка из 5, голосов 10
|