Primärschlüssel direkt nach der Eingabe wieder auslesen

Status
Nicht offen für weitere Antworten.

Pasche

Bekanntes Mitglied
In meiner Java-Webanwendung füge ich Daten in folgende MySQL Tabelle ein:

Code:
+------------+-------------+------+-----+---------+----------------+
| Field      | Type        | Null | Key | Default | Extra          |
+------------+-------------+------+-----+---------+----------------+
| id         | int(11)     |      | PRI | NULL    | auto_increment |
| menuepunkt | varchar(20) |      |     |         |                |
| template   | int(2)      |      |     | 0       |                |
| aktiv      | int(1)      |      |     | 0       |                |
+------------+-------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)

Das passende Statement lautet in etwa:
Code:
INSERT INTO navigation (menuepunkt, template, aktiv) VALUES ('test', '3', '1');

Wie kann ich jetzt die id bekommen, die diesem Eintrag zugewiesen wird? Wird irgendwie automatisch zurückgeworfen, welchen Wert das auto_increment erreicht hat?
 
DP hat gesagt.:
select LAST_INSERT_ID() as id from navigation;

Als ergebnis erhalte ich immer nur 0 ???:L

Code:
mysql> select LAST_INSERT_ID() as id from navigation;
+----+
| id |
+----+
|  0 |
|  0 |
|  0 |
|  0 |
|  0 |
|  0 |
|  0 |
|  0 |
|  0 |
+----+
9 rows in set (0.09 sec)

mysql> select * from navigation;
+----+----------------+----------+-------+
| id | menuepunkt     | template | aktiv |
+----+----------------+----------+-------+
|  1 | test           |        2 |     1 |
|  2 | News           |        1 |     1 |
|  3 | inaktiverPunkt |        4 |     1 |
|  4 | nn             |        1 |     1 |
|  5 | neuetemplates  |        0 |     1 |
|  6 | fff            |        0 |     1 |
|  7 | testtemplate   |        2 |     1 |
|  8 | schluss        |        3 |     0 |
|  9 | gggg           |        2 |     0 |
+----+----------------+----------+-------+
9 rows in set (0.02 sec)
 
jetzt aber 😉

INSERT INTO navigation (id, menuepunkt, template, aktiv) VALUES (null, 'test', '3', '1');
 
info

es heisst eigentlich

SELECT LAST_INSERT_ID()

ohne weitere Angaben - ist ne ziemlich "magische" Funktion

und soll immer sofort nach einem Insert in die entsprechende Tabelle aufgerufen werden und gilt nur "innerhalb der Connection"

bei den neueren Treibern gibts da auch ne jdbc funktion dafür
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben