426 Stimmen

SQL Server - Rückgabewert nach INSERT

Ich versuche, einen Schlüsselwert nach einer INSERT-Anweisung zurückzubekommen. Beispiel: Ich habe eine Tabelle mit den Attributen name und id. id ist ein generierter Wert.

    INSERT INTO table (name) VALUES('bob');

Jetzt möchte ich die ID im selben Schritt zurückerhalten. Wie wird das gemacht?

Wir verwenden Microsoft SQL Server 2008.

0voto

So verwende ich OUTPUT INSERTED, wenn ich in eine Tabelle einfüge, die ID als Identitätsspalte in SQL Server verwendet:

'myConn is the ADO connection, RS a recordset and ID an integer
Set RS=myConn.Execute("INSERT INTO M2_VOTELIST(PRODUCER_ID,TITLE,TIMEU) OUTPUT INSERTED.ID VALUES ('Gator','Test',GETDATE())")
ID=RS(0)

0voto

Robert Quinn Punkte 582

Sie können eine Select-Anweisung an Ihre Insert-Anweisung anhängen. Integer myInt = Insert into table1 (FName) values('Fred'); Select Scope_Identity(); Dies gibt einen Wert der Identität zurück, wenn der Skalierer ausgeführt wird.

-5voto

FanOfTamago Punkte 120

Nach dem Einfügen in eine Tabelle mit einer Identitätsspalte können Sie auf @@IDENTITY verweisen, um den Wert zu erhalten: http://msdn.microsoft.com/en-us/library/aa933167%28v=sql.80%29.aspx

-5voto

David Guidos Punkte 11

* Die Reihenfolge der Parameter in der Verbindungszeichenfolge ist manchmal wichtig. * Die Position des Provider-Parameters kann den Cursor des Datensatzes nach dem Hinzufügen einer Zeile unterbrechen. Wir haben dieses Verhalten mit dem SQLOLEDB-Anbieter gesehen.

Nachdem eine Zeile hinzugefügt wurde, sind die Zeilenfelder nicht verfügbar, es sei denn, der Provider ist als erster Parameter in der Verbindungszeichenfolge. Wenn der Provider an einer beliebigen Stelle in der Verbindungszeichenfolge steht, außer als erster Parameter, sind die neu eingefügten Zeilenfelder nicht verfügbar. Als wir den Provider an den ersten Parameter setzten, erschienen die Zeilenfelder wie von Zauberhand.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X