Laden...

IDENtITIY Spalte mir variable erstellen?

Erstellt von mercuer vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.260 Views
M
mercuer Themenstarter:in
79 Beiträge seit 2006
vor 16 Jahren
IDENtITIY Spalte mir variable erstellen?

verwendetes Datenbanksystem: <SQL Server 2000/2005>

Hallo zusammen!

Ich möchte eine neue Tabelle erzeugen mit einer IDENTITY Spalte. Diese Spalte soll als Startwert eine Wert haben, denn ich aus einer anderen Tabelle ermittle und in eine Variabel schreibe. Das sieht dann so aus:

...
[ZRunNumberNew] [int] IDENTITY(@MaxRunNumber,1)
...

Das funktioniert aber nicht. Wenn ich jedoch die Variabel mir 1 ersetze, funktioniert es.
Heißt das ich kann beim erstellen einer solchen Spalte keine Variabel benutzen?

S
285 Beiträge seit 2005
vor 16 Jahren

Wofür willst du manuell den int Wert der Identity Spalte setzen? Das macht SQL Server automatisch. Ich nehme an, du hast das Problem mit dem erzeugen neuer Einträge während der Laufzeit, wo du mit der neu angelegten ID arbeiten musst.

Verwendest du Stored Procedures?

M
mercuer Themenstarter:in
79 Beiträge seit 2006
vor 16 Jahren

Ich glaube es hat sich erledigt. Ich dachte wenn ich Daten in diese Spalte importiere und der Startwert immer noch auf eins steht kommt es früher oder später zu einem Konflikt. z.B: ich importiere denn Wert 15 und füge dann wieder normal über meinen Code Records hinzu, komme ich irgendwann zum Wert 15, was aber wohl nicht so ist weil der SQL Server automatisch beim höchsten Wert aufsetzt. Sehe ich das richtig??

Tut mir leid wenn ich hier über Grundlagen stolpere, aber ich muss mich momentan gerade zum ersten mal mit einem Update Script für meine Datenbank herumschlagen.

S
285 Beiträge seit 2005
vor 16 Jahren

Jetzt verstehe ich dein Problem. Ich würde beim Importieren immer auf den höchstmöglichen Wert aufsetzen um Konflikte zu vermeiden. Wenn du aber die ID's der Exporttabelle/Records brauchst, musst du leider deren Referenzen auf andere Tabellen neu setzen.

Die zu exportierenden Daten

12 Text1
15 Text2

Sollen in die Importtabelle mit Werten

.
.
.
15 TextA
16 Text B
22 Text C

kopiert werden.

Über Insert sieht es dann fogend aus:

15 TextA
16 Text B
22 Text C
23 Text 1
24 Text 2

Wobei du nach jeden Insert den neuen Identity Wert zurückgeben lassen musst um alle in Relation stehenden Tabellen zu aktualisieren.

F
10.010 Beiträge seit 2004
vor 16 Jahren

"@Param" geht nur bei DML, also insert Update, delete ( und sp's).
Du musst also den Wert ausnamsweise in den string "friemeln".

2.
Beim import kannst Du ohne vorherige Änderung ( IDENTITY_INSERT )
nichts in die ID spalte von hand eintragen, also ist es schnuppe, wo du anfängst.