title image


Smiley Re: nächste freie nummer ermitteln, aber wie?
Servus etxebarria,



ich denke, da kommst nur mit einer Schleife zurecht, die dir jeden einzelnen Wert prüft, ob es diesen schon gibt oder nicht. In etwa so:





BEGIN TRANSACTION

Declare @StartVal int

Set @StartVal = 1



While Exists (Select * From Tabelle Where Zahl = @StartVal)

Set @StartVal = @StartVal + 1



Print @StartVal

COMMIT TRANSACTION



Das ist MSSQL-Syntax. Hier ist darauf zu achten, dass das ganze in einer expliziten Transaktion stattfindet. Dadurch wird die Tabelle so lange gesperrt, bis die Anweisung durchgelaufen ist. Ansonsten könnte es theoretisch passieren, dass in der Zeit zwischen Auslesen und Eintragen des freien Wertes eine Abfrage denselben Wert raus bekommt. Würde die wzeite Abfrage diesen Wert einfügen, hättest ein Problem (weil ich mal davon ausgehe, dass der Wert eindeutig sein soll).



Am besten verpackst das ganze Ding noch in eine Funktion, die einfach aufrufen kannst. Denke aber auch daran, dass diese Anweisung unter Umständen sehr langsam werden kann, wenn erst mal mehrere hundert Werte abgefragt werden müssen. IN diesem Fall würde es sich empfehlen, die Variable @StartVal entsprechend zu erhöhen, wenn sicher gestellt ist, dass unter einem bestimmten Wert keine Lücken mehr vorhanden sind.



Ciao, WolfgangE
An Optimist Is A Person Who Has Not Been Shown All The Facts Yet!

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: