![]() |
Datenbank: MySQL • Version: 5 • Zugriff über: Zeos
[MySQL]Nächster auto_increment Wert?
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 :) |
Re: [MySQL]Nächster auto_increment Wert?
Delphi-Quellcode:
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.
ZQuery1.SQL.Text:='SELECT LAST_INSERT_ID()';
Gruß Igotcha |
Re: [MySQL]Nächster auto_increment Wert?
Den nächsten kannst du nicht herausfinden, nur den letzten (wie das geht, hat Igotcha oben geschrieben).
|
Re: [MySQL]Nächster auto_increment Wert?
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 |
Re: [MySQL]Nächster auto_increment Wert?
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.
|
Re: [MySQL]Nächster auto_increment Wert?
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.
|
Re: [MySQL]Nächster auto_increment Wert?
Zitat:
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 |
Re: [MySQL]Nächster auto_increment Wert?
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. |
Re: [MySQL]Nächster auto_increment Wert?
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:
das einfügen der zeilen geschieht direkt via SQL-query.
`id` int(11) NOT NULL auto_increment,
`sign` varchar(10) NOT NULL, `rate` decimal(10,4) NOT NULL default '1.0000', PRIMARY KEY (`id`) 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 |
Re: [MySQL]Nächster auto_increment Wert?
Hi,
den momentanen Status der auto_increment-variable bekommst du so:
Code:
cu
$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']; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz