Bir SQL SELECT ifadesi tarafından döndürülen satırlarda bir döngüye sahibim ve bir satırın verileri üzerinde işlem yaptıktan sonra, bazen satırın değerini GÜNCELLEME istiyorum. Döngünün gövdesindeki işlem önemsizdir ve SQL'de yazamıyorum. Seçili satır için UPDATE'i çalıştırmayı denediğimde bir hata alıyorum (Perl'nin DBD :: SQLite :: st yürütme altında başarısız oldu: veritabanı tablosu kilitlendi). Yapmaya çalıştığım şeyi başarmak için okunabilir, verimli ve taşınabilir bir yol var mı? Başarısız, bunu yapmak için DBD veya SQLite özgü bir yolu var mı?Bir döngüde SELECT tarafından döndürülen satırları nasıl güncelleyebilirim?
Açıkçası, güncellemeleri ayrı veri yapısına alıp döngüden sonra çalıştırabilirim, ancak kodun bundan sonra da nefret etmesinden nefret ediyorum.
Eğer ilgileniyorsanız, burada ilgili Perl kodu.
my $q = $dbh->prepare(q{
SELECT id, confLoc FROM Confs WHERE confLocId ISNULL});
$q->execute or die;
my $u = $dbh->prepare(q{
UPDATE Confs SET confLocId = ? WHERE id = ?});
while (my $r = $q->fetchrow_hashref) {
next unless ($r->{confLoc} =~ m/something-hairy/);
next unless ($locId = unique_name_state($1, $2));
$u->execute($locId, $r->{id}) or die;
}
Kullanımınız için çok kötü, Hazırda bekletmek istediğiniz şey için mükemmel olur. – Zoidberg
İçsel olarak, kaçınmaya çalıştığım verimsiz operasyonu gerçekleştirecekti. –
@Zoidberg, çok kötü yararsız yorumlar indiremeyiz. – friedo