Ich benutze die Windows ODBC API um auf eine MsSQL Datenbank zuzugreifen.
Mein problem ist das ich nachdem ich einen Datensatz habe einfügen lassen nicht die Werte aller Spalten dieses neuen Datensatzes kenne da die Tabelle auch Spalten mit "Identity"(Automatisches Inkrementieren) hat.
Was ich brauche ist eine Möglichkeit um über das Handle des "SQL Statement" an den neu erstellten Datensatz ranzukommen.
Ich habe es schon mit SQLFetch versucht doch das funktioniert anscheinend nicht mit einem Insert.
INSERT INTO blablubb (name,date,bla) VALUES("bla",$datum,"blubb");
deine Frage nach id:
SELECT id FROM blablubb WHERE name = "bla" AND date = $datum, "blubb");
Also ich denke so kann das nicht funktionieren denn bei diesem Ansatz wird gar kein Bezug zur Anweisung die das Insert enthielt genommen. Deshalb würde ich auch Datensätze bekommen die nicht mit diesem Insert eingefügt wurden.
natürlich wird bezug genommen, schliesslich hängst du die genau exakten daten als bedingung an das select an, (ok wenn man zufällig genau die gleichen daten schonmal drin hat könnte man höchstens noch ein ORDER BY id DESC LIMIT 1 anhängen, dann sollte man wirklich den letzten Eintrag erhalten. -- class God : public ChuckNorris { };
natürlich wird bezug genommen, schliesslich hängst du die genau exakten daten als bedingung an das select an, (ok wenn man zufällig genau die gleichen daten schonmal drin hat könnte man höchstens noch ein ORDER BY id DESC LIMIT 1 anhängen, dann sollte man wirklich den letzten Eintrag erhalten.
Jo das würde halt nur funktionieren wenn man nur einen Datensatz der diese Werte enthält in der Tabelle hätte.
Auf die Sache mit dem Sortieren und Ergebnisse auf 1 beschränken bin ich noch nicht gekommen. Das wäre eine Lösung allerdings würde es die Performanz der Anwendung verschlechtern da ich Die Tabelle sperren müsste um zu verhindern das zwischen dem Insert und dem Select noch ein anderes Insert kommt.
Mal sehen ob das mit dem Tabellen sperren funktioniert.