MySQL - Autoincrement Feld - Fremdschlüssel

Alles zum PostgreSQL-Server

Moderator: Moderatoren

MySQL - Autoincrement Feld - Fremdschlüssel

Beitragvon brandelh » Mi, 19. Dez 2012 13:46

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
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13273
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

Re: MySQL - Autoincrement Feld - Fremdschlüssel

Beitragvon nightcrawler » Mi, 19. Dez 2012 14:01

funzt bei MySQL evtl auch ein SELECT @@identity?
--
Joachim
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
Benutzeravatar
nightcrawler
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 248
Registriert: Di, 24. Apr 2012 15:33
Wohnort: 72181 Starzach

Re: MySQL - Autoincrement Feld - Fremdschlüssel

Beitragvon brandelh » Mi, 19. Dez 2012 14:03

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 ;-)
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13273
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

Re: MySQL - Autoincrement Feld - Fremdschlüssel

Beitragvon nightcrawler » Mi, 19. Dez 2012 14:30

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.
--
Joachim
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
Benutzeravatar
nightcrawler
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 248
Registriert: Di, 24. Apr 2012 15:33
Wohnort: 72181 Starzach

Re: MySQL - Autoincrement Feld - Fremdschlüssel

Beitragvon georg » Mi, 19. Dez 2012 14:41

Hallo,


hierzu befrage man die MySQL Dokumentation, Abteilung CREATE TABLE. Ich zitiere von http://dev.mysql.com/doc/refman/5.5/en/create-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/mysql-insert-id.html
Liebe Grüsse aus der Eifel,

Georg
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 1769
Registriert: Fr, 08. Feb 2008 21:29

Re: MySQL - Autoincrement Feld - Fremdschlüssel

Beitragvon bgl » Di, 17. Sep 2013 18:15

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?
bgl
Cut&Paste-Entwickler
Cut&Paste-Entwickler
 
Beiträge: 43
Registriert: Di, 30. Aug 2011 19:45


Zurück zu SQL-Server

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste