Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Uzyskaj identyfikator ostatnio wstawionych rekordów

SCOPE_IDENTITY() poprawnie poda LAST ID. To, czego potrzebujesz, to połączenie go z @@Rowcount, aby uzyskać zakres identyfikatorów. Jak wskazuje drugi Richard , działa to tylko wtedy, gdy przyrost jest ustawiony na 1

Na przykład:

declare @last int, @first int
insert ...
select @last = scope_identity(), @first = scope_identity() - @@rowcount + 1

Inny sposób (użyj tego w SQL Server 2008, aby uzyskać gwarantowane wyniki) w tym celu należy użyć WYJŚCIA klauzula

declare @ids table (id int)
INSERT INTO Table1 (FirstName ,LastName ,EmailAddress)
output inserted.id into @ids

-- Get the ids
SELECT id from @Ids

Tabela zawiera teraz wszystkie wstawione identyfikatory



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie można połączyć się z SQL Express Błąd:26-określono błąd lokalizacji serwera/wystąpienia)

  2. Dynamiczny SQL a procedura składowana

  3. Błąd SQL:nie można użyć wyszukiwania pełnotekstowego w wystąpieniu użytkownika.

  4. Wybierz kolumnę w SQL, która nie znajduje się w Grupuj według

  5. Odpytywanie typów danych XML, które mają atrybuty węzła xmlns