![]() |
Re: Sql-Statement für kleinste nicht vorhanden Nummer
ist zwar nicht die "reine Lehre" aber vielleicht ein brauchbarer Ansatz, falls Deine DB keine Trigger, wohl aber Subselects unterstützt:
SQL-Code:
Gruß
Insert into TabellenName
(ID, MeinZahlWert, MeinCharWert) select max(ID)+1, 4711 as MeinZahlwert, 'NurEinBeispiel' as MeinCharWert from Tabellenname |
Re: Sql-Statement für kleinste nicht vorhanden Nummer
Wenn Du es mit simplem sql lösen willst, dann würde ich vorher mal folgendes Statement absetzen:
SQL-Code:
Damit wird Dir dann die bisher größte vergebene id ausgegeben... Da mal fix ne 1 hinzuaddiert, und schon bist Du fertig.
SELECT MAX(id) FROM name_der_tabelle
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 |
Re: Sql-Statement für kleinste nicht vorhanden Nummer
Hai barnti,
überlege doch mal ob es nicht einfacher ist anstelle einer nummerichen ID eine GUID zu verwenden. |
Re: Sql-Statement für kleinste nicht vorhanden Nummer
Ich hab ihn so verstanden das er die kleinste frei ID sucht! :gruebel:
Nicht einfach die nächstgrößte. |
Re: Sql-Statement für kleinste nicht vorhanden Nummer
Zitat:
Zitat:
|
Re: Sql-Statement für kleinste nicht vorhanden Nummer
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 |
Re: Sql-Statement für kleinste nicht vorhanden Nummer
Zitat:
|
Re: Sql-Statement für kleinste nicht vorhanden Nummer
Zitat:
Mir ist noch nichts aufgefallen (allerdings ist die Datenbank auch nicht riesen groß) |
Re: Sql-Statement für kleinste nicht vorhanden Nummer
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 |
Re: Sql-Statement für kleinste nicht vorhanden Nummer
Zitat:
Grüsse Woki |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:35 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