Hallo,
ich habe gerade meine Frage fast zu Ende geschrieben und dann habe ich die Antwort durch Zufall erfahren :=)
(Ich arbeite mit ODBC und C++)
Es ist einfach interessant zu wissen, zumindest für MySQL eher weniger Erfahrene wie mich.
Wenn man eine InnoDB MySQL Tabelle hat und für die pk's AUTO_INCREMENT setzt, ist das nicht einfach rauszufinden, wie man an den aktualliesierten Key-Wert kommt.
Hier ist die Lösung:
ich habe gerade meine Frage fast zu Ende geschrieben und dann habe ich die Antwort durch Zufall erfahren :=)
(Ich arbeite mit ODBC und C++)
Es ist einfach interessant zu wissen, zumindest für MySQL eher weniger Erfahrene wie mich.
Wenn man eine InnoDB MySQL Tabelle hat und für die pk's AUTO_INCREMENT setzt, ist das nicht einfach rauszufinden, wie man an den aktualliesierten Key-Wert kommt.
Hier ist die Lösung:
A common problem is how to get the value of an automatically generated ID from an INSERT. With ODBC, you can do something like this (assuming that auto is an AUTO_INCREMENT field):
INSERT INTO foo (auto,text) VALUES(NULL,'text');
SELECT LAST_INSERT_ID();
Or, if you are just going to insert the ID into another table, you can do this:
INSERT INTO foo (auto,text) VALUES(NULL,'text');
INSERT INTO foo2 (id,text) VALUES(LAST_INSERT_ID(),'text');
See section 21.2.12.3 How to Get the Unique ID for the Last Inserted Row.
For the benefit of some ODBC applications (at least Delphi and Access), the following query can be used to find a newly inserted row:
SELECT * FROM tbl_name WHERE auto IS NULL;
INSERT INTO foo (auto,text) VALUES(NULL,'text');
SELECT LAST_INSERT_ID();
Or, if you are just going to insert the ID into another table, you can do this:
INSERT INTO foo (auto,text) VALUES(NULL,'text');
INSERT INTO foo2 (id,text) VALUES(LAST_INSERT_ID(),'text');
See section 21.2.12.3 How to Get the Unique ID for the Last Inserted Row.
For the benefit of some ODBC applications (at least Delphi and Access), the following query can be used to find a newly inserted row:
SELECT * FROM tbl_name WHERE auto IS NULL;
Kommentar