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

Jaka jest różnica między Scope_Identity(), Identity(), @@Identity i Ident_Current()?

  • @@identity funkcja zwraca ostatnią tożsamość utworzoną w tej samej sesji.
  • scope_identity() funkcja zwraca ostatnią tożsamość utworzoną w tej samej sesji i w tym samym zakresie.
  • ident_current(name) zwraca ostatnią tożsamość utworzoną dla określonej tabeli lub widoku w dowolnej sesji.
  • identity() funkcja nie jest używana do uzyskania tożsamości, służy do tworzenia tożsamości w select...into zapytanie.

Sesja to połączenie z bazą danych. Zakresem jest bieżące zapytanie lub bieżąca procedura składowana.

Sytuacja, w której scope_identity() i @@identity funkcje różnią się, jeśli masz wyzwalacz na stole. Jeśli masz zapytanie, które wstawia rekord, powodując, że wyzwalacz wstawia gdzieś inny rekord, scope_identity() funkcja zwróci tożsamość utworzoną przez zapytanie, natomiast @@identity funkcja zwróci tożsamość utworzoną przez wyzwalacz.

Więc normalnie użyjesz scope_identity() funkcja.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. @@ROWCOUNT — Uzyskaj liczbę wierszy, których dotyczy ostatnia instrukcja w SQL Server

  2. Znajdź wartość w dowolnym miejscu w bazie danych

  3. Wpływ rozszerzonego zdarzenia query_post_execution_showplan w programie SQL Server 2012

  4. Nie można połączyć się z serwerem — błąd związany z siecią lub specyficzny dla instancji

  5. SQL Server IN a wydajność EXISTS