Wie kann ich kopieren Sie eine Zeile in die gleiche Tabelle, SQL Server 2008
A) Mein Weg bisher:
sqlCommand.CommandText =
"INSERT Table1 ([column1],[column2],[column3])" +
" SELECT [column1],[column2],[column3]" +
" FROM Table1 WHERE Id =" + param +
";select scope_identity() as id";
B) ich wünschte, so etwas zu tun:
INSERT INTO "table1" (* (without the ID-column))
SELECT (* (without the ID-column))
FROM "table1"
Hinweis: ich bin ein kopieren auf die gleiche Tabelle. Ich möchte nur einfach kopieren Sie Sie alle zu einer anderen Zeile, während natürlich geben die neue Zeile eine neue ID.
Ist, dass gute Praxis und möglich oder nicht?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der einzige Weg, dies zu tun ist, um eine Liste der Spalten aus, wie in deinem ersten Beispiel. Es gibt keine syntax, wie
SELECT *, -Id
Sollten Sie verwenden, parametrisiert SQL-obwohl für SQL-injection-und plan-caching-Gründen.
Ich hatte das gleiche Problem mir und wollte eine schöne und einfache Weise, dies zu tun.
Ich habe eine Lösung gefunden hier, die das zulässt. Ich habe geändert, es leicht zu entfernen, die Ausgabe-id und auch, um die IdColumnName ein Standard-Wert für 'Id'.
Beispiel: