MSSQL 2008 TSQL aufsteigende Nummer in vorhandene Tabelle eifügen.

bejay

Mitglied
Hallo,
für mein jetziges Problem gibt es bestimmt einige Lösungswege.
Ich habe eine Tabelle die eine Spalte mit einem fortlaufenden Zählerwert(int), derzeit NULL, enthält. Der Anfangswert soll 153 sein, dann aufsteigend.
Kann man das mit SQL oder TSQL oder im Management Studio überhaupt lösen?

Gruß
bejay
 
Ja, kann man :
Wenn du in den Eigenschaften des Tabellenfeldes die Eigenschaft (istIdentity) auf true stellst schalten sich die eigenschaften ID-Ausgangswert und ID-Inkrement frei - Die Eigenschaft findest du unter Identitätsspezifikation.

GGF musst du die Tabelle erst umkopieren. Hierbei gibt es noch die Möglichkeit mit Identity Insert on

LG Alex
 
Hallo bejay,

am einfachsten ist es im Management Studio.

Dazu wählst du die Tabelle aus und rufst im Kontextmenü "Entwerfen" auf.
Dann die Spalte markieren und in den Spalteneigenschaften den Eintrag "Identifikationsspezifikation" auswählen und auf Ja ändern. Danach kannst du Schrittweite und Startwert angeben.

Ein Eintrag bei CREATE TABLE sieht dann so aus
Code:
Feldname int NOT NULL IDENTITY (153, 1)
 
Hallo Bernd,
wenn ich das nächste mal so etwas mache, merke ich mir deinen Tipp, aber jetzt habe ich mich nicht präzise ausgedrückt. Die Tabelle enthält bereits Datensätze nur die Spalte ist NULL und es sieht so aus, dass man dann die ID Spec nicht mehr ändern kann. Mittlerweile habe ich folgendes gemacht: Ich habe die Tab von meinem angebundenen AccessADP in meine hilfsAccess.mdb exportiert. Dort eine AutoWert Spalte hinzugefügt, ein Update AutoWert+152 auf meine Spalte hlpZaehler gemacht, die nicht benötigten Felder entfernt und die Tabelle als hlpTab wieder ins AccessADP exportiert. Jetzt fehlt mir die richtige Syntax um die Spalte UrTabelle.Zähler mit den Werten aus hlpTab.hlpZaehler zu füllen. Bin erst Anfänger in (T)SQL.
Grüße
bejay
 
Hallo bejay,

ich hab zwar "nur" MSSQL2005, doch das sollte auch bei MSSQL2008 gehen.

Bei dem Eintrag "Identifikationsspezifikation" auf das + drücken und dann kannst du den Wert von "Ist Identity" auf Ja ändern und danach sind auch Schrittweite und Startwert editierbar.

Es geht auch mit TSQL - temporäre Tabelle erstellen, Daten einfügen, alte Tabelle löschen und temporäre Tabelle umbenennen.
SQL:
BEGIN TRANSACTION
GO
CREATE TABLE dbo.Tmp_Testtabelle
	(
	Feld1 int NOT NULL IDENTITY (153, 1),
	Feld2 datetime NOT NULL,
	Feld3 nvarchar(50) NOT NULL
	)  ON [PRIMARY]
GO
SET IDENTITY_INSERT dbo.Tmp_Testtabelle ON
GO
IF EXISTS(SELECT * FROM dbo.Testtabelle)
	 EXEC('INSERT INTO dbo.Tmp_Testtabelle (Feld1, Feld2, Feld3)
		SELECT Feld1, Feld2, Feld3 FROM dbo.Testtabelle WITH (HOLDLOCK TABLOCKX)')
GO
SET IDENTITY_INSERT dbo.Tmp_Testtabelle OFF
GO
DROP TABLE dbo.Testtabelle
GO
EXECUTE sp_rename N'dbo.Tmp_Testtabelle', N'Testtabelle', 'OBJECT' 
GO
COMMIT
 

Neue Beiträge

Zurück