webForumDet fria alternativet

Använda variabler vid skapande av tabell

Databaser & SQL

3 svar · 337 visningar · startad av Troxy

Medlem sedan mars 20041 505 inlägg
Frågan#1

Hejsan, använder SQL Server 2000.
Där kan man ju använda variabler med DECLARE och SET.

Nu undrar jag om det går att använda en variabel när man skapar en tabell?
Kodexempel:

DECLARE @START_ID INT
SET @START_ID = (SELECT MAX(ID) FROM tabell)

CREATE TABLE tabell2 (
  [ID] INT IDENTITY(@START_ID, 1) NOT NULL,
  ...
)

SQL Server säger följande om raden där man skapar fältet:

Felaktig syntax nära '@START_ID'

Går det alltså inte? :(

Medlem sedan dec. 200012 464 inlägg
#2

Det går men jag förstår inte varför du tycker dig behöva göra på detta sättet.

Medlem sedan mars 20041 505 inlägg
#3

Jag sitter och konverterar artikelregister från gamla DOS-system till SQL-databaser.
I det gamla systemet finns det två register, men dessa måste slås ihop till ett enda register.
Eftersom samma artikelnummer kan finnas i båda registren så blir det krock när det slås ihop.
Det är mycket viktigt att artikelnumren från register 1 förblir orörda.
Därför måste register 2 tilldelas nya nummer som börjar räkna där register 1 slutar.
Så då tänkte jag att man skapar en IDENTITY som börjar räkna från det högsta numret i register 1.

Medlem sedan dec. 19996 721 inlägg
#4

DBCC CHECKIDENT('tabell', RESEED, @START_ID)

Men är det verkligen något som kommer att göras så ofta att du behöver en rutin för det?

262 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)