1712
Goto Top

ID-Nr in Tabelle automatisch hochzählen

Hallo, ich habe eine Tabelle namens Auftrag, deren Aufbau ist NR als Identity-Feld und Auftrag
Wenn ich nun per Script Daten in diese Tabelle einfügen möchte, bekommen alles Datensätze die gleich fortlaufende Nummer. Wie kann ich das Richtigstellen?

Also Tabelle Auftrag
Aufbau: Column1 = Nr
Column2 = Auftrag

Dieses Script verwende ich:

SET IDENTITY_INSERT infas_test.dbo.AUFTRAG ON
INSERT INTO dbo.Auftrag(Nr,auftrag)
SELECT (select NR from Auftrag),orderpositionen.auftragsnr
FROM orderpositionen
group by auftragsnr
SET IDENTITY_INSERT infas.dbo.auftrag OFF


Das Ergebnis in der Tabelle sieht wie folgt aus:
NR AUFTRAG
5 349481
5 20230
5 20364
5 20473
5 1250797
5 1638
5 17456
5 353965
5 6057
5 18863
5 19816
usw.

Wie schaffe ich es jetzt, das er wirklich jeden Satz hochzählt???

Viele Dank
Gruß
Nico

Content-Key: 64320

Url: https://administrator.de/contentid/64320

Printed on: April 19, 2024 at 07:04 o'clock

Member: AndreasHoster
AndreasHoster Jul 20, 2007 at 15:46:59 (UTC)
Goto Top
Indem Du zuerst mal reinschreibst, was für ein DB System Du verwendest.

Ich gehe mal von MS SQL aus:

Die Option IDENTITY_INSERT Auftrag ON bedeutet nicht, daß automatisch hochgezählt wird.
Die Option bedeutet, daß man in eine Identitätsspalte, die normalerweise automatisch vom System Ihren Wert bekommt, man explizite Werte reinschreiben kann, was normalerweise nicht geht.

Wenn Auftrag.NR eine Identitätsspalte ist, und Du die automatisch hochzählen lassen willst, dann darfst Du einfach keine NR angeben.
Also:
INSERT INTO dbo.Auftrag(auftrag)
SELECT orderpositionen.auftragsnr
FROM orderpositionen
group by auftragsnr

Und was immer Du damit bezwecken wolltest:
SELECT (select NR from Auftrag),orderpositionen.auftragsnr
FROM orderpositionen
es macht sicherlich nicht das, was Du vorgehabt hast. Ein Select Statement, das mehr als einen Datensatz liefern kann, in den Spaltendefinitionen reinzuschreiben kann nur ein Programmierfehler sein.
Member: Desperado
Desperado Jul 21, 2007 at 06:48:48 (UTC)
Goto Top
hi, bei mssql kannst du das per enterprise manager in den eigenschaften der tabelle einstellen!