AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Prism Auto_inc Wert vor bzw. sofort nach dem speichern ermitteln.
Thema durchsuchen
Ansicht
Themen-Optionen

Auto_inc Wert vor bzw. sofort nach dem speichern ermitteln.

Ein Thema von Mavarik · begonnen am 24. Aug 2006 · letzter Beitrag vom 24. Aug 2006
Antwort Antwort
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.130 Beiträge
 
Delphi 10.3 Rio
 
#1

Auto_inc Wert vor bzw. sofort nach dem speichern ermitteln.

  Alt 24. Aug 2006, 07:44
Datenbank: MySQL • Version: 5 • Zugriff über: MySQL .Net Client
Hallo Zusammen!

Ich würde gerne wissen, wie ich den Auto_inc Wert des so eben erzeugten Datensatzes ermitteln kann?

Beispiel

Ich erzeuge einen Datensatz und muss in eine Fremddatei das so eben geschriebene ID speichern.

Das Auto_inc ID ist primary Key.

Danke Frank
  Mit Zitat antworten Zitat
Benutzerbild von chrisw
chrisw

Registriert seit: 11. Jan 2005
Ort: Schleswig
193 Beiträge
 
Delphi XE8 Professional
 
#2

Re: Auto_inc Wert vor bzw. sofort nach dem speichern ermitte

  Alt 24. Aug 2006, 07:47
Also mit SQL geht das so:

SELECT LAST_INSERT_ID()

oder

SELECT * FROM table_name WHERE id_field IS NULL

oder

SELECT @@IDENTITY
Christian Wahl
me, myself and I, die lustigen Drei !!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Auto_inc Wert vor bzw. sofort nach dem speichern ermitte

  Alt 24. Aug 2006, 07:48
Ich weiß nicht, wie es beim .Net-Client ist, die Mysql-API bietet aber die Funktion mysql_insert_id(), über die man die letzte in der aktuellen Session vergebene ID zurückgeliefet bekommt.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.130 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: Auto_inc Wert vor bzw. sofort nach dem speichern ermitte

  Alt 24. Aug 2006, 07:49
Danke!

Zitat von chrisw:
Also mit SQL geht das so:
SELECT * FROM table_name WHERE id_field IS NULL
NULL?

Wie kann ein Auto_inc Feld Null sein?

Frank
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Auto_inc Wert vor bzw. sofort nach dem speichern ermitte

  Alt 24. Aug 2006, 07:58
Zitat von chrisw:
SELECT LAST_INSERT_ID()
Das sollte bei MySQL klappen... Aufruf nachdem in Delphi der Datensatz geschrieben wurde. Unter Delphi32 wäre das z.B. im AfterPost Ereignis.

Zitat von chrisw:
SELECT * FROM table_name WHERE id_field IS NULL
Das klappt nicht. Rufst Du den Befehl vor dem Speichern auf, kriegst du die nicht die ID des Datensatzen, der ja neu angelegt wird. Rufst du den Befehl nach dem Speichern auf, so ist das id_field sicherlich nicht null... Und selbst wenn du ein "order by id_field desc limit 0,1" hinzufügst, kriegst du zwar den zuletzt eingefügte ID zurück, aber es garantiert Dir keiner, dass der Datensatz auch von DIR hinzugefügt wurde. Schliesslich hängen normalerweise noch mehrere Clients an der gleichen Datenbank und können unter Umständen gleiche Aktionen ausführen.

Zitat von chrisw:
SELECT @@IDENTITY
Das wäre die MSSQL Variante, aber nicht ausführbar für MySQL. Entspricht im Grunde einem Select LAST_INSERT_ID()
  Mit Zitat antworten Zitat
Benutzerbild von chrisw
chrisw

Registriert seit: 11. Jan 2005
Ort: Schleswig
193 Beiträge
 
Delphi XE8 Professional
 
#6

Re: Auto_inc Wert vor bzw. sofort nach dem speichern ermitte

  Alt 24. Aug 2006, 09:44
Also hier mal die entsprechenden Passagen aus dem aktuellen MySQL Handbuch !!!


IDENTITY = value

Diese Variable ist synonym zur Variablen LAST_INSERT_ID. Sie ist aus Gründen der Kompatibilität mit anderen Datenbanksystemen vorhanden. Sie können ihren Wert mit SELECT @@IDENTITY auslesen und mit SET IDENTITY einstellen.


LAST_INSERT_ID = value

Stellt den von LAST_INSERT_ID() zurückzugebenden Wert ein. Dieser wird im Binärlog gespeichert, wenn Sie LAST_INSERT_ID() in einer Anweisung verwenden, die eine Tabelle aktualisiert. Durch Einstellen dieser Variablen wird der von der C-API-Funktion mysql_insert_id() zurückgegebene Wert nicht geändert.

SQL_AUTO_IS_NULL = {0 | 1}

Bei der Einstellung 1 (Vorgabe) ermitteln Sie den zuletzt eingefügten Datensatz für eine Tabelle, die eine AUTO_INCREMENT-Spalte umfasst, mithilfe des folgenden Konstrukts:

WHERE auto_increment_column IS NULL
Christian Wahl
me, myself and I, die lustigen Drei !!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz