SQLite: Kombinieren Sie AUSWÄHLEN, und LÖSCHEN in ein statement
Muss ich laufen, zwei Aussagen so:
Wählen Sie den Betrag aus der db wo ID=5 DELETE from db where ID=5
Derzeit bereite ich, und führen Sie zwei unterschiedliche Aussagen. Ich Frage mich, ob es einen Weg gibt, zu kombinieren, in einer Anweisung.
Im Grunde alles, was ich zu tun ist, um einen Betrag Spalte aus der Zeile, bevor Sie gelöscht wird.
- Ich kann mich irren, aber ich glaube nicht, dass Sie können. Sie können nicht in eine einzelne änderung, die seit dem löschen kann, löschen Sie die Informationen, die Sie versuchen zu bekommen. Es würde brechen Datenbank-Integrität.
Du musst angemeldet sein, um einen Kommentar abzugeben.
SQLite nicht unterstützt diese Erweiterung zum SQL-standard -- Sie tun müssen, verwenden Sie sowohl die Anweisungen, WÄHLEN Sie zuerst LÖSCHEN weiter. Sie können wickeln Sie Sie in eine Transaktion, natürlich, (BEGIN-und COMMIT-Anweisungen vor und nach garantiert dass), zur Gewährleistung der Atomarität und Konsistenz.
Vorausgesetzt, dass der aufrufende thread/Prozess besitzt eine eindeutige Kennung (z.B. thread_id), ich glaubst ein brauchbarer Ansatz wäre, ein flag (sagen, "handlerid") zu Ihrem Tisch, der auf null gesetzt ist, auf einfügen, und führen Sie dann:
Nicht sicher, wie Sie es durchführen würde gegen eine Transaktion, kann aber nicht aus irgendeinem Grund denken, es wäre wesentlich schlechter (vielleicht sogar besser), und mit diesem Ansatz kann der code scheint in etwa so einfach, wie Sie bekommen können. anders als eine Transaktion, es wird nicht von Ihnen verlangen, um eine Schleife in dem Fall, dass eine Transaktion fehlschlägt, um sicherzustellen, dass alle ausstehenden Elemente, die in der Tabelle wurden zu der Zeit der jüngste WÄHLEN Sie bekamen verarbeitet.
Ist es zu spät, aber für zukünftige Besucher. In meinem Fall habe ich wie unten
Ich löschen möchte, die ID, wo Menge = 5 so hab ich das
Können Sie dies tun, indem Sie trennt die zwei Anweisungen durch ein Semikolon getrennt, z.B. (mit Hilfe der .NET-Portierung von SQLite):