![]() |
Datenbank: MySQL • Version: 5.x • Zugriff über: libsql
Zu schnelle SQL-Befehle, ist das möglich?
Hallo,
ich sitze zurzeit vor einem ehrlich gesagt eher etwas seltsamen Problem: ich habe zwei Rechner, auf dem einen läuft die Datenbank MySQL und auf dem anderen entwickle ich ein Programm für meinen Betrieb. Nun greife ich über libsql auf die Datenbank zu und alles funktioniert wunderbar, bis zu dem einen Punkt, an dem mehrere SQL-Befehle (UPDATE-Befehle) kurz hintereinander an die Datenbank geschickt werden. Ich nutze zum testen gerade die folgende Methode:
Delphi-Quellcode:
Nun ist es so, dass nach dieser Schleife immer ein True gefolgt von einer 0 oder 1 kommt. Es sollte meines Erachtens nach aber immer eine 1 folgen und nicht nur ein mal, so wie es in diesem Beispiel leider ist (zumindest bei mir). Wenn ich allerdings nach den beiden Befehlen in der Schleife ein SleepEx(...) und mindestens 20 Millisekdungen angebe, dann bekomme ich als Ergebnis immer die 1, allerdings ist das eine sehr unsaubere Lösung.
// Voraussetzungen:
// - TListBox zum loggen (ListBox1) // - Verbindung zur Datenbank steht (MyDB1) // - Es gibt den Datensatz mit ID 1 und UPDATE funktioniert damit procedure SendTestCommands(); var sql : String; i : Integer; begin sql := 'UPDATE test SET testtime = ''' + FloatToStr(Now) + ''' WHERE id = 1'; for i := 0 to 10 do begin ListBox1.Items.Add(BoolToStr(MyDB1.Query, True)); ListBox1.Items.Add(IntToStr(MyDB1.RowsAffected)); end; end; Daher meine Frage: woran kann es liegen? Liegt es an einer MySQL-Einstellung, die ich ändern kann? Oder mache ich irgendetwas falsch? Mit fischigen Grüßen :wink: s.h.a.r.k |
Re: Zu schnelle SQL-Befehle, ist das möglich?
Hallo,
nehmen wir an, du hast momentan die Daten drin:
Code:
nun fuehrst du das aus:
id | time
1 | 1 2 | 1
SQL-Code:
Dann sieht das jetzt so aus:
update foo set time = 2 where id = 1
Code:
AffectedRows ist dann 1.
id | time
1 | 2 2 | 1 Nun fuehrst du das Query nochmal aus, das Ergebnis ist dasselbe, und AffectedRows ist 0. Wenn der bestehende Datensatz gleich dem neuen ist, d.h. keine Aenderung erfolgt, dann wird die Zeile nicht aktualisiert und AffectedRows bleibt folglich 0. Greetz alcaeus |
Re: Zu schnelle SQL-Befehle, ist das möglich?
Ich wollte gerade schreiben, dass das mit diesem AffectedRows zusammenhängt, da ich mich nochmal hingesetzt habe und ein paar weitere Tests gemacht habe. Muss dazu sagen, dass ich eher der Anwender von MySQL bin und es nicht wirklich gut kenne ;) Aber vielen Dank! Diese Info bringt mich allgemein schon recht weit!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz