In SQL Server versuche ich, Werte aus einer Tabelle in eine andere einzufügen, indem ich die folgende Abfrage verwende:
delete from tblTable1
insert into tblTable1 select * from tblTable1_Link
Ich erhalte die folgende Fehlermeldung:
Spaltenname oder Anzahl der übergebenen Werte stimmt nicht mit der Tabellendefinition überein.
Ich bin sicher, dass beide Tabellen dieselbe Struktur, dieselben Spaltennamen und dieselben Datentypen haben.
Bitte helfen Sie mir!
Sie haben nicht dieselbe Struktur... Ich kann garantieren, dass sie unterschiedlich sind
Ich weiß, dass Sie es bereits erstellt haben... Es gibt bereits ein Objekt namens 'tbltable1' in der Datenbank
Was Sie vielleicht wollen, ist dies (was auch Ihr anderes Problem behebt):
Drop table tblTable1
select * into tblTable1 from tblTable1_Link
für Einfügungen ist es immer besser, die Spaltennamen anzugeben, siehe die folgenden
DECLARE @Table TABLE(
Val1 VARCHAR(MAX)
)
INSERT INTO @Table SELECT '1'
funktioniert einwandfrei, die Änderung der Tabellendefinition in verursacht den Fehler
DECLARE @Table TABLE(
Val1 VARCHAR(MAX),
Val2 VARCHAR(MAX)
)
INSERT INTO @Table SELECT '1'
Msg 213, Ebene 16, Zustand 1, Zeile 6
Insert Error: Spaltenname oder Anzahl der gelieferten Werte stimmt nicht mit der Tabelle Definition.
Aber die Änderung der oben genannten zu
DECLARE @Table TABLE(
Val1 VARCHAR(MAX),
Val2 VARCHAR(MAX)
)
INSERT INTO @Table (Val1) SELECT '1'
funktioniert. Sie müssen die angegebenen Spalten genauer angeben
Geben Sie die Strukturen an, und wir können uns das ansehen
das Spaltenpräfix stimmt nicht mit einem in der Abfrage verwendeten Tabellen- oder Aliasnamen überein.
Ich habe auch an der Lösung dieses Fehlers gearbeitet
Jetzt habe ich herausgefunden, warum der Fehler auftritt, ich muss nur kleine Änderungen in der Abfrage vornehmen.
http://sqlerrormessages.blogspot.com/2009/08/sql-server-error-messages-msg-107.html