DBD::SQLite のバグ?
DBIC::Loader の blblack さんが綺麗なサンプルを返信してくれたのでそれを書くと、
my $test_ite = DBIC::Test->search;
while ( my $test = $test_ite->next ) { # Fails
###foreach my $test ($test_ite->all) { # Works
$test->text( $test->text . ' updated' );
$test->update;
}
とかで、イテレータでまわそうとするとupdate時に死ぬ。(searchで複数の行が帰ってくる場合)
配列で全部とってきてまわしたときは普通に動く。
ちなみに、DBIC::Test->search->all というのは CDBI でいうリストコンテキストでの search と同じことです。もちろん CDBI と同じように
my @tests = DBIC::Test->search;
ともかけるす。というか僕は最初そやって投稿したので、上の例が帰ってきたときにネイティブDBIC使いとの違いを知らしめられたという感じです。