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

Използвайте IDENT_CURRENT() за връщане на текущата стойност на самоличността в колона за самоличност в SQL Server

В SQL Server можете да използвате T-SQL IDENT_CURRENT() функция за връщане на последната стойност на идентичност, генерирана за определена таблица или изглед в колона за идентичност. Последната генерирана стойност на идентичност може да бъде за всяка сесия и всякакъв обхват.

Синтаксис

Синтаксисът е така:

IDENT_CURRENT( 'table_or_view' )

table_or_view Аргументът е името на таблицата или изгледа, чиято стойност на идентичност се връща.

Пример 1 – Основна употреба

Ето един основен пример за код.

ИЗБЕРЕТЕ IDENT_CURRENT('Домашни любимци') КАТО резултат;

Резултат:

+---------+| Резултат ||----------|| 3 |+---------+

В този случай текущата стойност на идентичността е 3.

Ето още една заявка, която проверява още таблици.

SELECT IDENT_CURRENT('Домашни любимци') КАТО домашни любимци, IDENT_CURRENT('Най-добри приятели') КАТО Най-добри приятели, IDENT_CURRENT('Градове') КАТО градове;

Резултат:

+--------+--------------+---------+| Домашни любимци | Най-добри приятели | Градове ||--------+--------------+----------|| 3 | 121 | 180 |+--------+--------------+---------+

Пример 2 – Включително схемата

Можете също да включите схемата в аргумента.

ИЗБЕРЕТЕ IDENT_CURRENT('dbo.Pets') КАТО резултат;

Резултат:

+---------+| Резултат ||----------|| 3 |+---------+

Пример 3 – След вмъкване

В този пример вмъквам още два реда в Домашни любимци таблица, след което изберете IDENT_CURRENT() отново.

INSERT INTO Pets (PetName)VALUES ('Brian'), ('Alf');SELECT IDENT_CURRENT('dbo.Pets') КАТО резултат;

Резултат:

+---------+| Резултат ||----------|| 5 |+---------+

Ето как изглежда таблицата:

ИЗБЕРЕТЕ * ОТ домашни любимци;

Резултат:

+--------+-----------+| PetId | Име на домашни любимци ||--------+-----------|| 1 | Омир || 2 | Феликс || 3 | Руф || 4 | Брайън || 5 | Алф |+--------+-----------+

PetId колоната е колоната за идентичност. Неговата начална стойност е 1, а стойността на нарастването също е 1.

Вижте как да използвате свойството IDENTITY() в SQL Server за кода, използван за създаване на тази таблица.

Пример 4 – Проверете всички таблици в базата данни

Ето пример за проверка на всички таблици в базата данни за тяхната начална стойност на идентичността.

ИЗБЕРЕТЕ TABLE_SCHEMA, TABLE_NAME, IDENT_CURRENT(TABLE_SCHEMA + '.' + TABLE_NAME) КАТО IDENT_CURRENT ОТ INFORMATION_SCHEMA.TABLES, КЪДЕТО IDENT_CURRENT(TABLE_SCHEMA + '.' + TABLE_NAME) НЕ Е NULL; 

Резултат:

+----------------+----------------+----------- -----+| TABLE_SCHEMA | TABLE_NAME | IDENT_CURRENT ||----------------+----------------+------------ ----|| dbo | ConstraintTest | 17 || dbo | Събитие | 1 || dbo | Табло | 8 || dbo | Домашни любимци | 5 || dbo | Най-добри приятели | 121 || dbo | Градове | 180 || dbo | Цветове | 6 || dbo | t6 | 1 || dbo | t7 | 100 |+----------------+----------------+------------ ----+

Относно връщаната стойност

Връщаната стойност за IDENT_CURRENT() е numeric(@@MAXPRECISION,0)) . Това означава, че това е числов тип данни с фиксирана точност и мащаб.

Точността зависи от сървъра. @@MAXPRECISION аргумент връща нивото, използвано от десетични и числови типове данни, както е зададено в момента на сървъра. Точността определя максималния общ брой десетични цифри (включва тези от лявата и дясната страна на десетичната запетая).

Вторият аргумент определя мащаб от 0 , което означава, че няма десетични цифри вдясно от десетичната запетая.

Можете да изпълните следната заявка, за да намерите нивото на точност, зададено в момента на вашия сървър:

ИЗБЕРЕТЕ @@MAX_PRECISION КАТО [Максимална точност];

Ето резултата в моята система:

+-----------------+| Максимална прецизност ||-----------------|| 38 |+-----------------+

Създаване на колона за идентичност

Можете да създадете колона за идентичност, като използвате IDENTITY() свойство във вашия CREATE TABLE или ALTER TABLE изявление.

Друг начин за създаване на колона за идентичност е IDENTITY() функция. Това ви позволява да създадете колона за идентичност, когато използвате SELECT INTO изявление за прехвърляне на данни от един източник към друг.

Разлики с @@IDENTITY и SCOPE_IDENTITY()

IDENT_CURRENT() функцията е подобна на @@IDENTITY и SCOPE_IDENTITY() , но има някои разлики.

@@IDENTITY и SCOPE_IDENTITY() върне последната стойност на идентичност, генерирана в всяко таблица в текущата сесия. Разликата между тези две функции обаче е, че SCOPE_IDENTITY връща стойността само в рамките на текущия обхват, докато @@IDENTITY не се ограничава до конкретен обхват.

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

Вижте IDENT_CURRENT срещу @@IDENTITY срещу SCOPE_IDENTITY в SQL Server:Каква е разликата? за прост пример, който разглежда разликите между тези три функции.


  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 с възстановяване срещу опции за възстановяване

  2. Въведение в SQL Server

  3. Нуждаете се от колона за дата и час в SQL Server, която автоматично се актуализира, когато записът бъде променен

  4. Как да инсталирате SSMS

  5. Каква е целта на репликацията на данни?