AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi [MySQL]Nächster auto_increment Wert?
Thema durchsuchen
Ansicht
Themen-Optionen

[MySQL]Nächster auto_increment Wert?

Ein Thema von Aenogym · begonnen am 6. Apr 2006 · letzter Beitrag vom 7. Apr 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#1

[MySQL]Nächster auto_increment Wert?

  Alt 6. Apr 2006, 16:28
Datenbank: MySQL • Version: 5 • Zugriff über: Zeos
hi leute,

ich habe hier in meiner tabelle eine spalte als auto_increment definiert.
wie kann ich herausfinden, welchen auto_increment-wert die nächste zeile bekommt, die ich einfüge?

MAX(autoinc_feld)+1 hilft mir nicht wirklich weiter, da in meiner tabelle auch lücken durch DELETEs entstehen können, die nicht vom auto_increment berücksichtigt werden.

vielen dank im voraus,
euer aeno
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
Igotcha

Registriert seit: 22. Dez 2003
544 Beiträge
 
Delphi 2006 Professional
 
#2

Re: [MySQL]Nächster auto_increment Wert?

  Alt 6. Apr 2006, 16:31
ZQuery1.SQL.Text:='SELECT LAST_INSERT_ID()'; führst Du aus, nachdem Du einen Datensatz eingefügt hast. Der zurückgelieferte Wert ist connection-abhängig, so dass Du auch tatsächlich Deinen Wert zurückbekommst, nicht den von evtl. anderen Usern zwischenzeitlich hinzugefügten.

Gruß Igotcha
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: [MySQL]Nächster auto_increment Wert?

  Alt 6. Apr 2006, 16:34
Den nächsten kannst du nicht herausfinden, nur den letzten (wie das geht, hat Igotcha oben geschrieben).
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: [MySQL]Nächster auto_increment Wert?

  Alt 7. Apr 2006, 08:20
hi ihr beiden,

danke für die antworten. doch leider haben die mir nicht wirklich helfen können. LAST_INSERT_ID() wäre zu umständlich, da ich das resultat noch extra irgendwo speichern müsste, um es zu einem späteren programmstart wieder zu verwenden.

aber ich habe herausgefunden, dass der wert, den ich suche, in information_schema.tables liegt. dort sind informationen für jede tabelle gespeichert. unter anderem auch, welcher auto_inc wert als nächstes benutzt wird

aeno
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  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: [MySQL]Nächster auto_increment Wert?

  Alt 7. Apr 2006, 08:29
Wie fügst Du denn die Daten ein... Direkt via SQL oder mittels append und Post vom Dataset... Beachte, dass erst beim Posten der Datensatz an den MySQL Server geht, und erst dann die ID vergeben wird.
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: [MySQL]Nächster auto_increment Wert?

  Alt 7. Apr 2006, 11:36
Ich hoffe, du arbeitest mit Transaktionen? Denn wenn nicht kannst du nicht davon ausgehen, dass der Wert, der im Informationsschema als nächster Auto-Increment-Wert hinterlegt ist auch wirklich der Wert ist, den dein nächster Datensatz bekommt.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Igotcha

Registriert seit: 22. Dez 2003
544 Beiträge
 
Delphi 2006 Professional
 
#7

Re: [MySQL]Nächster auto_increment Wert?

  Alt 7. Apr 2006, 11:58
Zitat von Aenogym:
danke für die antworten. doch leider haben die mir nicht wirklich helfen können. LAST_INSERT_ID() wäre zu umständlich, da ich das resultat noch extra irgendwo speichern müsste, um es zu einem späteren programmstart wieder zu verwenden.
Wie jetzt

Du fügst irgendwie einen Datensatz in die DB. Beim Ausführen erhält dieser neue Datensatz automatisch den AutoInc-Wert in der Tabelle. Anders geht das erstmal schon gar nicht.

Und was willst Du jetzt mit dem AutoInc-Wert machen? Das hast Du ja noch nicht verraten.

Mir fallen 2 Möglichkeiten ein:

1. der Wert dient z.B. in einer Rechnungsnummer. Dann fragst Du den Wert so ab, wie ich oben beschrieben habe und gibts ihn dann z.B. in dem Rechnungseingabeformular aus
2. du fügst danach Werte in eine andere Tabelle ein, die einen Bezug zu der ID des ersten Datensatzes haben sollen - dann machst Du das genauso

Gruß Igotcha
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: [MySQL]Nächster auto_increment Wert?

  Alt 7. Apr 2006, 12:15
Die neueste Version von Zeos unterstützt sequences, die genau für das da sind. Hierüber kannst du den letzten vergebenen Wert der Sequenz, sowie den nächsten zu vergebenen Wert abfragen. Ich arbeite nicht mit mysql und weiß daher nicht, ob es hiermit funktioniert.
Allerdings ist es unerheblich ob man den nächsten wert kennt oder nur den letzten vergebenen, da der zweitere bei mysql m.W. immer um 1 größer ist.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: [MySQL]Nächster auto_increment Wert?

  Alt 7. Apr 2006, 12:29
hi,

also ich beschreib mal meine situation:

in meiner tabelle für ich zeilen ein, die währungen und ihre wechselkurse darstellen. struktur:
SQL-Code:
  `id` int(11) NOT NULL auto_increment,
  `sign` varchar(10) NOT NULL,
  `rate` decimal(10,4) NOT NULL default '1.0000',
  PRIMARY KEY (`id`)
das einfügen der zeilen geschieht direkt via SQL-query.
der benutzer kann, wenn er möchte, eine währung löschen. dadurch entsteht ja quasi eine lücke in der id-spalte (zB. 1, 2, 3, 5). wenn er jetzt wieder eine neue währung hinzufügen möchte, dann erscheint mein formular, dass ihm schon anzeigt, welche ID die einzufügende währung bekommen wird.
wenn der benutzer das währungssymbol und den wechselkurs eingegeben hat, wird die zeile einfach eingefügt.
und nein, ich nutze keine transaktion dafür.

zur not könnte ich auf die anzeige der nächsten ID verzichten. das würde mir aber an anderer stelle etwas mehr arbeit machen. meint ihr, das wäre besser?

aenogym
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
Benutzerbild von sECuRE
sECuRE

Registriert seit: 10. Apr 2003
Ort: Heidelberg
360 Beiträge
 
Delphi 7 Professional
 
#10

Re: [MySQL]Nächster auto_increment Wert?

  Alt 7. Apr 2006, 13:29
Hi,

den momentanen Status der auto_increment-variable bekommst du so:
Code:
                $result = mysql_query("SHOW TABLE STATUS LIKE '".$tableName."'");
                if (!$result)
                        die("Error querying: ".mysql_error());
                $row = mysql_fetch_assoc($result);
                if (!$row)
                        die("Error: ".mysql_error());

                mysql_free_result($result);

                echo "Dein Wert: ".$row['Auto_increment'];
cu
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:32 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