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 2 von 3     12 3      
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#11

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

  Alt 17. Okt 2003, 13:39
ist zwar nicht die "reine Lehre" aber vielleicht ein brauchbarer Ansatz, falls Deine DB keine Trigger, wohl aber Subselects unterstützt:
SQL-Code:
Insert into TabellenName
(ID, MeinZahlWert, MeinCharWert)
select max(ID)+1,
       4711 as MeinZahlwert,
       'NurEinBeispielas MeinCharWert
  from Tabellenname
Gruß
Tim Leuschner
  Mit Zitat antworten Zitat
Benutzerbild von Wormid
Wormid

Registriert seit: 26. Aug 2003
Ort: Steinfurt
292 Beiträge
 
Delphi XE2 Professional
 
#12

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

  Alt 17. Okt 2003, 13:40
Wenn Du es mit simplem sql lösen willst, dann würde ich vorher mal folgendes Statement absetzen:

SELECT MAX(id) FROM name_der_tabelle Damit wird Dir dann die bisher größte vergebene id ausgegeben... Da mal fix ne 1 hinzuaddiert, und schon bist Du fertig.

Allerdings haben so gut wie alle Datenbanken einen Typen wie "autoincrement" oder sowas, was spricht denn gegen den? Warum willst Du das manuell machen?

Gruß

Wormid
Debuggers don't remove Bugs, they only show them in Slow-Motion.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#13

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

  Alt 17. Okt 2003, 13:43
Hai barnti,

überlege doch mal ob es nicht einfacher ist anstelle einer nummerichen ID eine GUID zu verwenden.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Tanadirian

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

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

  Alt 17. Okt 2003, 13:43
Ich hab ihn so verstanden das er die kleinste frei ID sucht!
Nicht einfach die nächstgrößte.
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

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

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

  Alt 17. Okt 2003, 13:47
Zitat von Sharky:
überlege doch mal ob es nicht einfacher ist anstelle einer nummerichen ID eine GUID zu verwenden.
Als Primärschlüssel eine Zeichenkette?....
Zitat von Tanadirian:
Ich hab ihn so verstanden das er die kleinste frei ID sucht!
Stimmt. Wer lesen kann ist klar im Vorteil.
  Mit Zitat antworten Zitat
Benutzerbild von Wormid
Wormid

Registriert seit: 26. Aug 2003
Ort: Steinfurt
292 Beiträge
 
Delphi XE2 Professional
 
#16

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

  Alt 17. Okt 2003, 13:50
Etwas suchen, was NICHT da ist, ist aber gar nicht so einfach... Ich wüsste nicht, ob das mit einem SQL-Statement überhaupt geht. Ich denke, da müsste man dann entweder zusätzlich eine Tabelle mit freien IDs pflegen, oder irgendwie Schleifen-Logic in die Application einbauen, die in einem Loop die erste freie ID sucht. (Achtung... langsaaaaaam)

Ich immer eh davon abraten, einmal gelöschte IDs später wieder zu vergeben. Sicher ist sicher.


Gruß

Wormid
Debuggers don't remove Bugs, they only show them in Slow-Motion.
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

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

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

  Alt 17. Okt 2003, 14:06
Zitat von Wormid:
Ich immer eh davon abraten, einmal gelöschte IDs später wieder zu vergeben. Sicher ist sicher.
Dem kann ich mich nur anschließen!
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#18

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

  Alt 17. Okt 2003, 15:04
Zitat von r_kerber:
Zitat von Sharky:
überlege doch mal ob es nicht einfacher ist anstelle einer nummerichen ID eine GUID zu verwenden.
Als Primärschlüssel eine Zeichenkette?....
Warum nicht? Meinst Du es geht zu sehr auf die Geschwindigkeit?
Mir ist noch nichts aufgefallen (allerdings ist die Datenbank auch nicht riesen groß)
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
woki

Registriert seit: 29. Mär 2003
563 Beiträge
 
Delphi 2006 Architect
 
#19

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

  Alt 17. Okt 2003, 15:07
Hallo barnti,

ich möchte vorsichtshalber nochmal etwas deutlicher warnen: Deine Lösungsidee, für die du eine Implementation suchst, löst nicht dein Problem, also liefert nicht das, was man braucht um einen Datensatz jetzt und in alle Zukunft eindeutig zu identifieren. Wenn Du auf einer ID, die einfach die kleinste zur Zeit nicht verwendete Zahl einer z.b. Integer Spalte ist, z.B. Relationen aufbaust, wird das gnadenlos knallen.

Erstens muß Du sicher stellen, das deine ID eindeutig ist (in einer Multiuser-Umgebung ist das nicht so einfach wie es sich anhört), zweitens mußt du sicher stellen, daß eine schon mal verwendete ID nie wieder verwendet wird, auch wenn der Datensatz gelöscht wurde.

Ich kenne eigentlich keine Datenbank, die diesen Namen verdient, und die keinen Mechanismus dafür zur Verfügung stellt, nämlich entweder Autoincrementfelder oder eine Generator (auch wenn der dann eventuell anders heißt, z.B. sequence (Oracle siehe oben)).

Grüsse
Woki
  Mit Zitat antworten Zitat
woki

Registriert seit: 29. Mär 2003
563 Beiträge
 
Delphi 2006 Architect
 
#20

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

  Alt 17. Okt 2003, 15:17
Zitat von Sharky:
Zitat von r_kerber:
Zitat von Sharky:
überlege doch mal ob es nicht einfacher ist anstelle einer nummerichen ID eine GUID zu verwenden.
Als Primärschlüssel eine Zeichenkette?....
Warum nicht? Meinst Du es geht zu sehr auf die Geschwindigkeit?
Mir ist noch nichts aufgefallen (allerdings ist die Datenbank auch nicht riesen groß)
Immer dann, wenn ein round trip zur Datenbank schmerzhaft oder unmöglich ist, bietet sich die Verwendung von Guids als Alternative zu buchungskreisen an, um eine eindutige ID zu erhalten, und hat da auch Verbreitung gefunden. Nachteil sind aber schon Performance und Datenmenge, das muß man im Einzellfall prüfen.

Grüsse
Woki
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 05:21 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