MYSQL LAST_INSERT_ID funktioniert nicht wie vorgesehen. Wie repariere ich?

8

Ich habe MySQL StoredProcedure geschrieben, um eine neue ID für jeden Tabellenwert zu erstellen und zurückzugeben. Allerdings erhält es einen falschen Wert für last_insert_id () von MySQL WorkBench und der Java-Anwendung.

Diese Prozedur wird von mehreren Sitzungen aus aufgerufen.

%Vor%

Es gibt mir "141215000000" und das bedeutet, dass last_insert_id () immer 0 zurückgibt. Ich sehe, dass es neue Daten korrekt in seq_data einfügt, wie angenommen.

%Vor%

Die Tabelle sieht so aus.

%Vor%

Mein Ziel ist wie ...

%Vor%

zurück 141215000001

%Vor%

zurück 141215000002

%Vor%

zurück 141215000001

    
handicop 15.12.2014, 01:12
quelle

1 Antwort

4

Wie in der MySQL-Dokumentation angegeben, LAST_INSERT_ID () gibt einen BIGINT (64-Bit) -Wert zurück, der den ersten automatisch generierten Wert darstellt, der für eine AUTO_INCREMENT-Spalte durch die zuletzt ausgeführte INSERT-Anweisung für eine solche Spalte festgelegt wurde .

In Ihrem Fall fügen Sie die ID ein, daher wird kein AUTO_INCREMENT-Wert generiert, daher gibt LAST_INSERT_ID 0 zurück.

Sie können versuchen, etwas wie:

%Vor%     
Victor Dodon 15.12.2014, 01:42
quelle

Tags und Links