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.
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.
jo men det är ju några onödiga sql-anropp
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.
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