免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1340 | 回复: 0
打印 上一主题 下一主题

perl稳固交易机制数据库编程! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-12-09 11:10 |只看该作者 |倒序浏览
我看到一篇关于perl稳固交易机制数据库编程,其中有一个例子:
my @records = (
                [ 0, "Larry Wall",      "erl Author",  "555-0101" ],
                [ 1, "Tim Bunce",       "DBI Author",   "555-0202" ],
                [ 2, "Randal Schwartz", "Guy at Large", "555-0303" ],
                [ 3, "Doug MacEachern", "Apache Man",   "555-0404" ]  
              );

my $sql = qq{ INSERT INTO employees VALUES ( ?, ?, ?, ? ) };
my $sth = $dbh->;prepare( $sql );

for( @records ) {
  eval {
    $sth->;bind_param( 1, @$_->;[0]);
    $sth->;bind_param( 2, @$_->;[1]);
    $sth->;bind_param( 3, @$_->;[2]);
    $sth->;bind_param( 4, @$_->;[3]);
    $sth->;execute();
    $dbh->;commit();
  };

  if( $@ ) {
    warn "Database error: $DBI::errstr\n";
    $dbh->;rollback(); #just die if rollback is failing
  }
}

$sth->;finish();

eval{...} 区块来拦截错误的发生,最後再使用 commit 或 rollback 来完成整个交易程序。
对于一个小的交易程序可以这样用一个块来完成,但是多数交易不可能只更新1~2张表,代码也比较长,还必调用一些函数来解决,这个时候如何用块来拦截呢?
上述例子也是每条记录就commit了,而不是最后才commit的,很少交易这样做。
不知老大们是怎么处理的?????还望多多指点菜鸟!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP