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

SQL Server — najlepszy sposób na uzyskanie tożsamości wstawionego wiersza?

  • @@IDENTITY zwraca ostatnią wartość tożsamości wygenerowaną dla dowolnej tabeli w bieżącej sesji we wszystkich zakresach. Tu musisz być ostrożny , ponieważ obejmuje zakresy. Możesz uzyskać wartość z wyzwalacza, zamiast bieżącego oświadczenia.

  • SCOPE_IDENTITY() zwraca ostatnią wartość tożsamości wygenerowaną dla dowolnej tabeli w bieżącej sesji i bieżącym zakresie. Ogólnie to, czego chcesz użyć .

  • IDENT_CURRENT('tableName') zwraca ostatnią wartość tożsamości wygenerowaną dla określonej tabeli w dowolnej sesji i dowolnym zakresie. Pozwala to określić, z której tabeli chcesz uzyskać wartość, na wypadek gdyby dwa powyższe elementy nie były dokładnie tym, czego potrzebujesz (bardzo rzadkie ). Ponadto, jak wspomniał @Guy Starbuck:„Możesz tego użyć, jeśli chcesz uzyskać aktualną wartość TOŻSAMOŚCI dla tabeli, do której nie wstawiłeś rekordu”.

  • OUTPUT klauzula INSERT Instrukcja pozwoli Ci uzyskać dostęp do każdego wiersza, który został wstawiony za pomocą tej instrukcji. Ponieważ jest ograniczony do konkretnego stwierdzenia, jest prostszy niż inne powyższe funkcje. Jest jednak trochę bardziej gadatliwy (musisz wstawić do tabeli zmiennej/tabeli tymczasowej, a następnie wykonać zapytanie) i daje wyniki nawet w przypadku błędu, w którym instrukcja jest wycofywana. To powiedziawszy, jeśli Twoje zapytanie korzysta z równoległego planu wykonania, jest to jedyna gwarantowana metoda do uzyskania tożsamości (bez wyłączania równoległości). Jest jednak wykonywany przed wyzwalacze i nie mogą być używane do zwracania wartości generowanych przez wyzwalacze.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak skonfigurować chmurę Spotlight i skutecznie rozwiązywać problemy z SQL Server

  2. Typowe wpadki serwera SQL

  3. Jakiego rozmiaru używasz dla varchar(MAX) w deklaracji parametru?

  4. 11 sposobów na odzyskanie klucza podstawowego w SQL Server (przykłady T-SQL)

  5. SQL DELETE z INNER JOIN