nach zu urteilen Sie Kommentare im gesamten, haben Sie einen Primärschlüssel auf dem Tisch, die nicht eine Identitätsspalte ist.
Wenn Ihre Version von SQL Server SQL 2012 ist, sollten Sie in Sequenzen aussehen: http://msdn.microsoft.com/en-us/library/ff878091.aspx
In anderen Versionen müssen Sie entweder die Tabelle mit der Identity-Eigenschaft neu erstellen (http://msdn.microsoft.com/en -us/library/aa933196 (v = sql.80) .aspx) für die Primärschlüsselspalte oder verwenden Sie einen zweistufigen Ansatz.
Wenn Sie mit dem zweistufigen Ansatz gehen Sie müssen sicherstellen, dass gleichzeitig laufende Einsätze nicht den gleichen neuen Wert am Ende mit. Der einfachste Weg, dies zu tun, ist dies durch die Auswahl und der Einsatz in einen Wert kombiniert und den serializable Tabellenhinweis verwendet:
CREATE TABLE dbo.Tbl1(id INT PRIMARY KEY, val1 INT, val2 INT)
INSERT INTO dbo.Tbl1(id, val1, val2)
VALUES((SELECT ISNULL(MAX(id)+1,0) FROM dbo.Tbl1 WITH(SERIALIZABLE, UPDLOCK)), 42, 47);
SELECT * FROM dbo.Tbl1;
Meinst du, du hast eine ['IDENTITY'-Spalte] (http://msdn.microsoft.com/en-us/library/ms186775.aspx) auf dem Tisch? Wenn ja, welches genaue Problem haben Sie, das nicht in der Dokumentation oder den [vielen Fragen] (http://stackoverflow.com/search?q=sql+identity) auf dieser Seite über ihre Verwendung diskutiert wird? In einem Kommentar unten erwähnen Sie einen Fehler, aber Sie haben nicht genau gesagt, was es ist. Im Idealfall zeigen Sie bitte Ihr 'CREATE TABLE'-Skript, Ihre' INSERT'-Anweisung und die resultierende Fehlermeldung an. – Pondlife
Dieser Thread hat alle meine Kopfschmerzen gelöst und Code wird zurück kompiliert. Warum ppl hat das abgelehnt? –