03/08/25 03:03
perl、DBIでのトランザクションについてなんですが、
今日のレコード数を持ってきて、それを+1した値で、
新たにINSERTするというときは、
↓みたいな感じでOKなのでしょうか?
(他のユーザが登録している場合でも、値のずれが生じないですよね?)
よろしくお願いします。
$dbh->{AutoCommit} = 0;
$dbh->{RaiseError} = 1;
eval {
$val = get_value("SELECT count(*)+1 FROM a WHERE 今日のもの");
$ret = insert_value("INSERT INTO a (foo, ...) values ($val, ...)");
$dbh->commit;
};
if ($@) {
warn "Transaction aborted because $@";
$dbh->rollback; # undo the incomplete changes
}