Thread Lock auf MySql-table notwendig? (12 answers)
Opened by gast at 2010-12-24 15:35

Gast gast
 2010-12-25 09:38
#143811 #143811
Hi topeg,

danke, das war schon mal hilfreich. Ich schätze ich brauche kein Lock. Ich hab noch ein paar Fragen:

Ist es richtig, dass wenn ich etwas mache in der Art
"Sql select abfeuern, Ergebnis mit Perl auswerten, ggf das sql insert abfeuern" ich mein Ziel nicht erreiche, da zwischen den beiden sql's längst andere Skriptaufrufe das Insert gemacht haben könnten?
Veranschaulichung
Code: (dl )
1
2
3
4
5
6
7
   my $sql = qq(SELECT count(number)
FROM test
where number='22');
my $sth = $dbh->prepare($sql);
$sth->execute();
Perlcode zur Auswertung des Selects,
ggf. gefolgt von dem Insert.


Ist es richtig, dass wenn ich die if select = 0 then insert logik in EINEM sql abfeuer, ich mein Ziel erreiche?
Veranschaulichung:
Code: (dl )
1
2
3
4
5
6
7
8
9
   my $sql = qq(set @match = (SELECT count(number)
FROM test
where number='22');
if (@match = '0')
insert into test values(4);
select @match;
select * from test;);
my $sth = $dbh->prepare($sql);
$sth->execute();

Ich stell mir das so vor, dass das gesamte sql statement atomar behandelt wird. Klar der Code geht so nicht, da muss ich noch recherchieren. Anmerkung: Ich brauch letztlich auch die Rückmeldung für jeden der 1000 Aufrufe, ob das insert gemacht wurde, daher das select * from test; am Ende. Das ist sicherlich bisher alles nicht toll, aber ich seh's eine gute, sichere Lösung halt noch nicht.
Last edited: 2010-12-25 11:01:38 +0100 (CET)

View full thread Lock auf MySql-table notwendig?