DBIx::HandlerでMySQLに接続してみる。

ORMを使わない場合のコネクションって何で取るのが主流なのか不明ですが、DBIx::Handlerってのを使ってる人が多そう?なので、ちょっと試してみます。

DBIx::Handler – search.cpan.org

use DBIx::Handler;

my $handler = DBIx::Handler->new($dsn, $user, $pass, $opts);

my $sql = 'UPDATE user SET name = ? WHERE id = ?';
my @bind = ('a','1');

eval{
    my $txn_guard = $handler->txn_scope;

    $handler->query($sql, \@bind);

    $txn_guard->commit();
};

トランザクション付きでアップデートしたい場合は上記のような感じ。
(もちろんトランザクションに対応したエンジンでテーブルを作成する必要はありますが・・)
commitが呼ばれる前に失敗した(dieされた)時は、勝手にrollbackが呼ばれる。