Zeilen dublizieren

Hallo zusammen,

bin eher SQL Anfänger (ich frag mich immer, an welchem Massstab man solch eine Angabe festmachen soll …) und bitte um Hilfe, da ich einen Performance Killer habe.

In einer DB (MS-SQL Server 8.0) muss ich bei Bedarf Zeilen duplizieren. Dabei bekommen alle neuen Zeilen einen automatischen index („id“, identity und Primary Key) und ein Feldinhalt wird geändert. Ansonsten sind alle Feldinhalte (erstmal :wink:) identisch.

Zur Zeit kopiere ich per c# Zelle für Zelle über einen Web-Service und dann eine StoredProcedure, was sehr lange dauert und anscheinend den WebServer überlastet. Der SQL Server ist dabei (mE nicht) das Problem.

Dazu eine Fragen:
Gibt es ein SQL Statement, das das Kopieren von Zeilen ermöglicht und möglichst die neue ID zurückgibt? (Die eine Zelle kann man ja dann separat ändern)
Falls es soetwas nicht im Standard gibt: Wie würde man eine SP aufsetzen, die als Parameter die alte id und den einen Feldinhalt bekommt. Falls da einer ein Beispiel hätte währe das wohl die optimale Lösung für mich.

Freue mich auf alle Antworten!

mfg

Dirk.Pegasus

Hallo,

das INSERT Statement kann seine Eingabe auch aus einem SELECT beziehen:

INSERT INTO tab SELECT a, b, c FROM tab WHERE …

Gruß

Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Peter,

perfekt, genau das was ich suchte.

Ein Schönheitsfehler entsteht durch die „id“, sonst könnte man wohl auch * für das select verwenden, egal. Einfach alle Felder listen und fertig. Das kann man ja zur Not mal in einer Methode oder Stored Procedure kapseln, die die Felder (außer dem nicht zu kopierenden) ermittelt, das select aufbaut, ausführt und die neue ID zurückgibt …

Besonders da deine Antwort genau den Nagel auf den Kopf getroffen hat, ein Sternchen!

Dirk.Pegasus