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

SQL Server - Най-добрият начин да получите самоличност на вмъкнатия ред?

  • @@IDENTITY връща последната генерирана стойност на идентичност за която и да е таблица в текущата сесия във всички обхвати. Тук трябва да внимавате , тъй като е в различни обхвати. Можете да получите стойност от тригер, вместо от текущото си изявление.

  • SCOPE_IDENTITY() връща последната генерирана стойност на идентичност за която и да е таблица в текущата сесия и текущия обхват. Общо взето това, което искате да използвате .

  • IDENT_CURRENT('tableName') връща последната стойност на идентичност, генерирана за конкретна таблица във всяка сесия и всеки обхват. Това ви позволява да посочите от коя таблица искате стойността, в случай че двете по-горе не са точно това, от което се нуждаете (много рядко ). Също така, както спомена @Guy Starbuck, "Можете да използвате това, ако искате да получите текущата стойност на IDENTITY за таблица, в която не сте вмъкнали запис."

  • OUTPUT клауза на INSERT оператор ще ви позволи достъп до всеки ред, който е бил вмъкнат чрез този оператор. Тъй като е обхванат до конкретното изявление, то е по-ясно отколкото другите функции по-горе. Въпреки това е малкопо-подробно (ще трябва да вмъкнете в таблица променлива/временна таблица и след това да направите заявка за нея) и това дава резултати дори при сценарий за грешка, при който операторът се връща назад. Въпреки това, ако вашата заявка използва план за паралелно изпълнение, това е единственият гарантиран метод за получаване на самоличността (с изключение на паралелизма). Той обаче се изпълнява преди задейства и не може да се използва за връщане на генерирани от задействане стойности.



  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 сървър)

  2. Естествено (човешко алфа-цифрово) сортиране в Microsoft SQL 2005

  3. Преобразувайте „smalldatetime“ в „datetime2“ в SQL Server (примери за T-SQL)

  4. SQL Server SP - Предаване на параметър за IN масив списък?

  5. Len() срещу datalength() в SQL Server 2005