Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Rückgabewert vom SQL Server Insert-Befehl mit c#

SCOPE_IDENTITY gibt den letzten Identitätswert zurück, der in eine Identitätsspalte im selben Bereich eingefügt wurde. Ein Bereich ist ein Modul:eine gespeicherte Prozedur, ein Trigger, eine Funktion oder ein Batch. Daher befinden sich zwei Anweisungen im selben Gültigkeitsbereich, wenn sie sich in derselben gespeicherten Prozedur, Funktion oder demselben Batch befinden.

Sie können SqlCommand.ExecuteScalar verwenden, um den Einfügebefehl auszuführen und die neue ID in einer Abfrage abzurufen.

using (var con = new SqlConnection(ConnectionString)) {
    int newID;
    var cmd = "INSERT INTO foo (column_name)VALUES (@Value);SELECT CAST(scope_identity() AS int)";
    using (var insertCommand = new SqlCommand(cmd, con)) {
        insertCommand.Parameters.AddWithValue("@Value", "bar");
        con.Open();
        newID = (int)insertCommand.ExecuteScalar();
    }
}