Es scheint jedoch viel einfacher zu sein, die folgende SQL zu erstellen und die Tabelle #temp ganz zu vermeiden:
%Vor%Versuchen Sie, die Spalten anzugeben:
%Vor%Scheint so, als ob Sie denken, Sie versuchen, in das PK-Feld einzufügen, da Sie nicht ausdrücklich die einzufügenden Spalten definieren. Wenn die Identity-Einfügung deaktiviert ist und Sie die Nicht-Pk-Spalten angeben, sollten Sie diesen Fehler nicht erhalten.
Sie können das nicht tun:
%Vor%Weil die Spaltenauflistungen nicht identisch sind. Sie haben die PK-Spalte aus #t gelöscht, sodass Sie in #t 1 Spalte weniger als in CTABLE haben. Dies entspricht dem folgenden:
%Vor%Dies würde aus offensichtlichen Gründen nicht funktionieren. In ähnlicher Weise können Sie das Platzhalterzeichen * nicht angeben, um die Einfügung auszuführen, wenn Sie nicht alle Spalten einfügen. Die einzige Möglichkeit, die Einfügung ohne Einfügen der PK durchzuführen, besteht darin, jede Spalte anzugeben. Sie können eine Liste von Spalten über dynamic sql generieren, aber Sie müssen sie auf die eine oder andere Weise angeben.
Wenn Sie SQL Server Management Studio und Ihre Probleme verwenden, haben Sie zu viele Felder, um sie alle außer der Identitätsspalte einzugeben. Klicken Sie dann mit der rechten Maustaste auf die Tabelle und klicken Sie auf "Skripttabelle als" / "Auswählen" / "Neues Abfragefenster" ".
Dies wird eine Liste von Feldern zur Verfügung stellen, die Sie kopieren können & amp; Einfügen in Ihre eigene Abfrage und dann entfernen Sie einfach die Identität Spalte.
Tags und Links sql sql-server sql-server-2005