Thread Lock auf MySql-table notwendig?
(12 answers)
Opened by gast at 2010-12-24 15:35 Guest gast Ja es sind alle zugreifenden Prozesse gemeint, die eine Berechtiguung haben, diese Tabelle zu lesen. Guest gast Du musst eval nutzen, wenn RaiseError => 1 gesetzt ist. Ansonsten kann man auch so was schreiben (ungetestet): Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 my $i = 4; my $sth_ins = $dbh->prepare('insert into test values (?)') || die("Can't prepare Statement!".$dbh->errstr."\n") my $sth_sel = $dbh->prepare('select id from test where id=?') || die("Can't prepare Statement! (".$dbh->errstr.")"); if($sth_ins->execute($i)) { print "Set new value\n"; } else { # einfügen nicht erfolgreich testen ob es den Eintrag schon gibt? # wenn es zu Fehlern kommt stimmt Irgend etwas anderes nicht. my $err=$dbh->errstr; if($sth_sel->execute($i) && $sth_sel->fetchrow_arrayref()->[0] == $i) { # der Eintrag existiert. Die Fehlermeldung muss nicht Ausgeben werden. print "Allready exists\n"; } else { die("Can't insert Value! $err\n") } } $sth_ins->finish; $sth_sel->finish; |