Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL: Datenbank zähler bei 100000 starten lassen (https://www.delphipraxis.net/72978-sql-datenbank-zaehler-bei-100000-starten-lassen.html)

Plague 10. Jul 2006 13:18

Datenbank: MySQL • Version: 4 • Zugriff über: Noch gar nicht ;)

SQL: Datenbank zähler bei 100000 starten lassen
 
Hallo,

wie kann ich in einer Datenbanktabelle (die ich im Moment erstelle) die ID (PRIMARY KEY) eigenständig hochzählen lassen, aber als Startwert 100000 setzen?

Geht das überhaupt mit MySQL?

Danke und Gruß
Thomas

pacman1986 10. Jul 2006 13:23

Re: SQL: Datenbank zähler bei 100000 starten lassen
 
du sucht auto_increment hatten wir in den letzten 24 std schon mal
hier

Phoenix 10. Jul 2006 13:26

Re: SQL: Datenbank zähler bei 100000 starten lassen
 
1.) Geht das nicht so einfach weil:
2.) Ist das Schwachfug. ;-)

Eine Möglichkeit wäre, einen Datensatz mit der Id 99999 anzulegen und wieder zu löschen, danach macht MySQL bei 100000 weiter, aber das ist eigentlich Sinnfrei.

Was wäre so schlimm, das Autoincrement das machen zu lassen wofür es da ist: Ab 1 allen Datensätzen eine eindeutige Nummer zuzuweisen?

Plague 10. Jul 2006 13:34

Re: SQL: Datenbank zähler bei 100000 starten lassen
 
ich möchte eine Suche anhand einer Nummer machen. Wenn da einige Dinge die ID 3 haben und danere eine 231 ist das (finde ich) doof. Deshalb möchte ich schlichtweg höher starten.

Würde es denn mit dem Anhang:
SQL-Code:
auto_increment=10000
gehen?

Edit:
OK, es geht nicht habe es probiert...

Karstadt 11. Jul 2006 22:56

Re: SQL: Datenbank zähler bei 100000 starten lassen
 
Eine weiter möglichkeit wäre du erstellt einen zweiten Feld z.B. nummer und speicherst dort die Nummer ab:

Delphi-Quellcode:
  with Tabelle do
  begin
    Append;
    Fieldbyname('Nummer').AsInteger := 10000 +  Fieldbyname('ID').AsInteger;
    Post;
  end;
Oder das machst du OnBeforePost

Jelly 12. Jul 2006 06:13

Re: SQL: Datenbank zähler bei 100000 starten lassen
 
So wie karstadt es schreibt klappt das nicht, weil du das ID Feld nach dem Append noch gar nicht auslesen kannst, sondern frühestens nach dem Post. Je nach Zugriff muss Du sogar erst ein Refresh machen.

Prinzipiell gilt als immer zu beachten: Man lasse die Finger weg von selbstinkrementierenden Feldern. Dafür sind die nicht gedacht. Erst gestern hatten wir bei der Arbeit den Fall, dass uns ein Kunde 2 Datensätze mit gleicher ID geliefert hat... Das passiert irgendwann immer, wenn man an diesen Feldern rumpfuscht... Deshalb lieber, wie Karstadt vorgeschlagen hat, ein 2. Feld hinzu, das Du dann von mir aus händisch füllst. Das kann bei fortlaufenden Rechnungen sinnvoll sein, da Du dort keine Sprünge in der Nummerierung drinhaben darfst (laut Gesetz). Aber die eindeutige Referenz soll die automatische ID bleiben.

Karstadt 12. Jul 2006 07:28

Re: SQL: Datenbank zähler bei 100000 starten lassen
 
Mein Fehler.

Du machst das in OnAfterInsert oder du machst es so:
Delphi-Quellcode:

Function GibLetzteNummer:String;
begin
  With Tabelle do
begin
  SELECT Max (ID) From Tabelle
  Result := Fieldbyname('ID');
  // Musst du diese Funktion selber anpasse ;)
end;
end;

Ich habe für solche fälle eine Nummerkreistabelle.

ID;Nummer;Bezeichnung

Nun kann ich neue Datensätze anlege und beim Nummerabfrage setzte ich den Wert Nummer + 1

ArmyMan 12. Jul 2006 09:00

Re: SQL: Datenbank zähler bei 100000 starten lassen
 
Also wie ich das verstehe will Plague eine neu erstellte Tabelle abfüllen wobei der anfangswert vom auto_increment 100000 sein sollte. Falls du phpMyAdmin oder sonst ein MySQL Admin Tool hast, kanns du das in der Tabelle definieren. Es gibt ein Feld indem man sieht wo der auto_increment Wert zur zeit steht. Dort kannst du einfach am anfang 100000 eintragen und der erste datensatz beginnt mit der ID 100000.

Hoffe ich konnte dir helfen...

Greetz


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:39 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