Seite 1 von 1

MySQL - Autoincrement Feld - Fremdschlüssel

Verfasst: Mi, 19. Dez 2012 13:46
von brandelh
Hallo,

Im PowerBasic Forum habe ich gerade abenteuerliche Konstrukionen gesehen bei der Aufgabe Daten in 2 Datenbanken anzulegen,
bei der in der ersten in einem autoinkrement Feld die UserID generiert wird und in der zweiten zu dieser UserID (Fremdschlüssel) Daten gespeichert werden sollen ...
Wie bekommt man nun für das zweite Replace raus, was MySQL als Wert für UserID vergeben hat ?

Hier steht es mit Beispielen ;-)

http://dev.mysql.com/doc/refman/5.0/en/ ... ue-id.html

Code: Alles auswählen

INSERT INTO Kunde (UserID,Name,...) VALUES(NULL,'Name',...);         # erzeugt neue UserID da NULL an autoincrement Feld übergeben wird.
INSERT INTO Infos(KundenNummer,text) VALUES(LAST_INSERT_ID(),'text');  # use UserID in second table

Re: MySQL - Autoincrement Feld - Fremdschlüssel

Verfasst: Mi, 19. Dez 2012 14:01
von nightcrawler
funzt bei MySQL evtl auch ein SELECT @@identity?

Re: MySQL - Autoincrement Feld - Fremdschlüssel

Verfasst: Mi, 19. Dez 2012 14:03
von brandelh
Sorry, ich versteh nur Bahnhof ;-)

Ich habe das dort nur gelesen und mir gedacht, dass könnte ich auch mal brauchen, schreibe es hier rein ;-)

Re: MySQL - Autoincrement Feld - Fremdschlüssel

Verfasst: Mi, 19. Dez 2012 14:30
von nightcrawler
hab dummerweise nur die Frage, nicht die Lösung gesehen...und dann zu schnell geantwortet. µ$ SQL bietet statt der Funktion LAST_INSERT_ID() eine Variable namens @@IDENTITY. Daher meine Frage bzw mein Hinweis, ob das evtl die Lösung auch bei MySQL sein kann.

Re: MySQL - Autoincrement Feld - Fremdschlüssel

Verfasst: Mi, 19. Dez 2012 14:41
von georg
Hallo,


hierzu befrage man die MySQL Dokumentation, Abteilung CREATE TABLE. Ich zitiere von http://dev.mysql.com/doc/refman/5.5/en/ ... table.html

To retrieve an AUTO_INCREMENT value after inserting a row, use the LAST_INSERT_ID() SQL function or the mysql_insert_id() C API function. See Section 12.14, “Information Functions”, and Section 22.9.3.37, “mysql_insert_id()”.
Weitere Beschreibungen zu mysql_insert_id() finden sich hier: http://dev.mysql.com/doc/refman/5.5/en/ ... rt-id.html

Re: MySQL - Autoincrement Feld - Fremdschlüssel

Verfasst: Di, 17. Sep 2013 19:15
von bgl
Wenn du mit LastInsertID arbeitest wäre eventuell eine Temporäre Variable hilfreich.

Code: Alles auswählen

INSERT INTO Kunde (UserID,Name,...) VALUES(NULL,'Name',...);         # erzeugt neue UserID da NULL an autoincrement Feld übergeben wird.
SET @tmpUserID = LAST_INSERT_ID(); # speichern: last insert id in @tmpuserid
INSERT INTO Infos(KundenNummer,text) VALUES(@tmpUserID,'text');  # use UserID in second table
SET @tmpInfoID = LAST_INSERT_ID(); # speichern: last insert id in @tmpinfoid
SELECT @tmpUserID AS UserID, @tmpInfoID AS InfoID; # nu sind beide auslesbar? 

Alternativ kannst du natürlich auch z.B. einen SELECT Last_Insert_ID(); durchführen und ggf. in einer Programmvariable speichern mit der du dann weiter arbeitest?