AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Sql-Statement für kleinste nicht vorhanden Nummer
Thema durchsuchen
Ansicht
Themen-Optionen

Sql-Statement für kleinste nicht vorhanden Nummer

Ein Thema von barnti · begonnen am 17. Okt 2003 · letzter Beitrag vom 17. Okt 2003
Antwort Antwort
Seite 1 von 3  1 23      
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#1

Sql-Statement für kleinste nicht vorhanden Nummer

  Alt 17. Okt 2003, 12:29
Hallo Alle,

ich versuche für eine Tabelle eine ID zu generieren. Dazu möchte ich die kleinste noch nicht vorhandene ID für den neuen Eintrag vergeben. Wie kann ich das effizient in ein SQL-Statement umsetzen?

Danke für eure Ideen, Gruß,

Barnti
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#2

Re: Sql-Statement für kleinste nicht vorhanden Nummer

  Alt 17. Okt 2003, 12:43
Üblicherweise macht man das mit einem Before-Insert-Trigger.
Gruß
Hansa
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Sql-Statement für kleinste nicht vorhanden Nummer

  Alt 17. Okt 2003, 12:52
Aha,

kannst Du das etwas ausführlicher erläutern. So kannn ich mit Deiner Antwort leider nicht viel anfangen...

Gruß,

Barnti
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#4

Re: Sql-Statement für kleinste nicht vorhanden Nummer

  Alt 17. Okt 2003, 13:00
Das war mir schon klar. 8) Aber das ist zu kompliziert, um es in einem Satz zu erklären, deshalb hab ich Dir das Stichwort "Trigger" gegeben. Das ist eine DB-Funktion, die praktisch im Hintergrund nur darauf wartet, etwas tun zu dürfen. In dem Zusammenhang kommen auch Generatoren ins Spiel. Der Trigger setzt den Generatorwert (das ist die gewünschte ID) um eins hoch. Hört sich kompliziert an, so schlimm ists aber gar nicht. Ich empfehle Dir hierzu den Kurs von Paul Jr., frage mich aber nicht wo der ist. Mußt suchen.
Gruß
Hansa
  Mit Zitat antworten Zitat
Tanadirian

Registriert seit: 13. Feb 2003
Ort: Pdm
67 Beiträge
 
#5

Re: Sql-Statement für kleinste nicht vorhanden Nummer

  Alt 17. Okt 2003, 13:14
Du kannst es auch umständlich machen! Mit einer Abfrage und einer Schleife


select ID as ID from Table1 damit bekommst du die Werte der ID-Spalte schon geordnet (aufsteigend!?)

Delphi-Quellcode:
i:=1;
repeat
if i <>query1.fieldbyname('ID').asinteger then break;
(*Mit dem "<>" bin ich mir nicht ganz sicher kann auch nur "<" sein*) 
i:=i+1;
query1.next;
until i=query1.recordcount+1;//damit die Schleife auch mal endet
//jetzt ist i der kleinste ID-Wert der fehlt

Das Beispiel geht natürlich davon aus das deine ID's bei 1 anfangen!
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#6

Re: Sql-Statement für kleinste nicht vorhanden Nummer

  Alt 17. Okt 2003, 13:16
@Hansa: Nicht jede Datenbank kennt Generatoren!
@Tanadirian: Und was machst Du, wenn während Du suchst, Datensätze gelöscht oder hinzugefügt werden werden?
  Mit Zitat antworten Zitat
Tanadirian

Registriert seit: 13. Feb 2003
Ort: Pdm
67 Beiträge
 
#7

Re: Sql-Statement für kleinste nicht vorhanden Nummer

  Alt 17. Okt 2003, 13:24
@r_kerber: Man kann in diesem Fall doch am Ende die Recordcounts von Query1 und Table1 vergleichen und wenn sie nicht übereinstimmen muß man halt das Ganze nochmal machen. (Ich hoffe du meintest das, ansonsten versteh ich deine Frage nicht )
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#8

Re: Sql-Statement für kleinste nicht vorhanden Nummer

  Alt 17. Okt 2003, 13:30
Was hältst Du dann von einer Tabelle, in der die ID geführt wird. Im Insert-Trigger wird dann transaktionssicher die nächste ID ermitteln. Dies im Client-Programm machen zu wollen, halte ich für ungünstig!
  Mit Zitat antworten Zitat
Tanadirian

Registriert seit: 13. Feb 2003
Ort: Pdm
67 Beiträge
 
#9

Re: Sql-Statement für kleinste nicht vorhanden Nummer

  Alt 17. Okt 2003, 13:32
So fit bin ich leider auch noch nicht in SQL
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#10

Re: Sql-Statement für kleinste nicht vorhanden Nummer

  Alt 17. Okt 2003, 13:37
Alternativ kann mann auch einen Generator (Interbase) oder Sequence (Oracle) verwenden oder für ID einen AutoInc-Datentyp (z.B. Seriell in Informix) verwenden! Damit bist Du dann aber abhängig von der Datenbank!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 15:44 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