ZeilenID bei "Insert" mit LabVIEW-DB-Toolkit zurückholen
Hallo zusammen,
habe folgendes Problem bei der Arbeit mit dem Datenbank-Toolkit von LabVIEW.
Zum einen arbeite ich mit 'ner MySQL-Datenbank, zum anderen (alternativ) lokal mit SQLite.
Ziel ist es, beim Eintrag einer neuen Zeile in eine Tabelle die ZeilenID der neu angelegten Zeile zurück zu bekommen, um anschließend mit dieser ID ein Update durchzuführen und dabei die restlichen Spalten zu füllen.
Ein Kollege hat herausgefunden, daß MySQL bei einem solchen Eintrag eine Lokale Variable namens "@@identity" anlegt, so daß der SQL-String wie folgt aussehen könnte:
INSERT INTO tabname (Spalte1, Spalte2,...) VALUES (Wert1,Wert2,...); SELECT @@identity.
Getestet haben wir das für die MySQL-Datenbank über das Programm "Navicat" und dort bekomme ich die Zeilennummer zurück.
Rufe ich eine solche Anweisung über die LabVIEW-Funktionen auf, erhalte ich eine Fehlermeldung vom ODBC-Treiber (für MySQL)
"... You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '; select @@identity' at line 1. in Conn Execute.vi"
Ähnliches passiert auch bei der SQLite-Datenbank. Da erhalte ich beim Aufruf von LabVIEW aus:
"Exception occured in Microsoft OLE DB Provider for ODBC Drivers, only one SQL statement allowed. in Conn Execute.vi"
Scheinbar bin ich da sowieso auf dem Holzweg, denn wenn ich das mit einem anderen Programm, wie z.B. "SQLiteSpy" ausprobiere, erhalte ich die Fehlermeldung "unrecognized token '@'"; lösche ich ein "@", kommt keine Fehlermeldung, aber auch kein Ergebnis, weil SQLite wahrscheinlich die Variable "identity" nicht kennt.
Kann mir jemand sagen, wie ich über LabVIEW zwei durch Semikolon getrennte Anweisungen übertragen kann, ohne, daß ein Fehler entsteht und wie bei SQLite die Variable heist, mit der die ID der eingefügten Zeile zurückgeliefert wird?
Oder gibt es eine ganz andere Möglichkeit? Wichtig ist nur, daß wirklich die ZeilenID zurückgeliefert wird, die zum entsprechenden INSERT-Befehl gehört, da verschiedene Nutzer quasi zeitgleich drauf zugreifen könnten.
Schließlich soll das Update ja im passenden Datensatz durchgeführt werden.
________________
LV 7.1; 8.5
|