Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Каква е разликата между Scope_Identity(), Identity(), @@Identity и Ident_Current()?

  • @@identity функцията връща последната самоличност, създадена в същата сесия.
  • scope_identity() функцията връща последната самоличност, създадена в същата сесия и същия обхват.
  • ident_current(name) връща последната създадена самоличност за конкретна таблица или изглед във всяка сесия.
  • identity() функцията не се използва за получаване на идентичност, тя се използва за създаване на идентичност в select...into заявка.

Сесията е връзката към базата данни. Обхватът е текущата заявка или текущата съхранена процедура.

Ситуация, при която scope_identity() и @@identity функциите се различават, ако имате тригер на масата. Ако имате заявка, която вмъква запис, което кара тригера да вмъкне друг запис някъде, scope_identity() функцията ще върне самоличността, създадена от заявката, докато @@identity функцията ще върне самоличността, създадена от тригера.

Така че обикновено ще използвате scope_identity() функция.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да създадете композитен първичен ключ в SQL Server (пример за T-SQL)

  2. В SQL Server, как да генерирам израз CREATE TABLE за дадена таблица?

  3. Поправете „Преобразуването не бе успешно при конвертиране на стойността на varchar“ при опит за конкатенация в SQL Server

  4. Топ 5 факта за намиране и замяна на SQL текстове в SQL Server с функция REPLACE

  5. nvarchar конкатенация / индекс / nvarchar(max) необяснимо поведение