1712
20.07.2007, aktualisiert am 21.07.2007
20880
2
0
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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 64320
Url: https://administrator.de/contentid/64320
Ausgedruckt am: 22.11.2024 um 08:11 Uhr
2 Kommentare
Neuester Kommentar
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.
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.