webForumDet fria alternativet

Autogenererat ID med datatypen varchar

Databaser & SQL

4 svar · 419 visningar · startad av Addeladde

Medlem sedan jan. 20013 406 inlägg
Frågan#1

Hej

Jag har ett fält i en gamal databas som uppgraderats genom åren där ett id är en sträng på 8 bokstäver. Nu skulle jag vilja ha så att om man inte anger ID själv så ska ett ID automatiskt genereras. Men hur ska jag lösa det på bäst sätt?

Det är just nu en MS SQL 2005 som körs i 2000 kompatibelt läge och SP används.

Medlem sedan jan. 200229 inlägg
#2

Vore det inte lättast att kontrollera om värde angetts, om inte så slumpar den fram ett värde och ser om det är upptaget. Är det inte upptaget så skapas det med resterande information.

Medlem sedan jan. 20013 406 inlägg
#3

jo men det är ju några onödiga sql-anropp

Medlem sedan jan. 200229 inlägg
#4

Vänd på det då?
Generera fem möjliga kombination och plocka fram de som redan existerar. Någon av dem borde ju vara ledig.

Medlem sedan jan. 20013 406 inlägg
#5

Jag gjorde så här:

IF @projid IS NULL
			BEGIN
			  SELECT TOP (1) @projid = CAST((CAST(projid AS INT) + 1) AS CHAR(8))
				FROM         projekt
				WHERE     (ISNUMERIC(projid) = 1)
				ORDER BY projid DESC
				
				IF @projid IS NULL
					BEGIN
					  SET @projid = '1'
					END
				
			END
265 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)