SCOPE_IDENTITY zwraca ostatnią wartość tożsamości wstawioną do kolumny tożsamości w tym samym zakresie. Zakres to moduł:procedura składowana, wyzwalacz, funkcja lub partia. Dlatego dwie instrukcje znajdują się w tym samym zakresie, jeśli znajdują się w tej samej procedurze składowanej, funkcji lub partii.
Możesz użyć SqlCommand.ExecuteScalar, aby wykonać polecenie insert i pobrać nowy identyfikator w jednym zapytaniu.
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();
}
}