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

Върнете нарастващата стойност на колона за идентичност в SQL Server

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

Синтаксис

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

IDENT_INCR ( 'table_or_view' )

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

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

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

SELECT IDENT_INCR('Pets') AS Result;

Резултат:

+----------+
| Result   |
|----------|
| 1        |
+----------+

В този случай стойността на увеличението на идентичността е 1.

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

SELECT 
  IDENT_INCR('Pets') AS Pets,
  IDENT_INCR('BestFriends') AS BestFriends,
  IDENT_INCR('Cities') AS Cities;

Резултат:

+--------+---------------+----------+
| Pets   | BestFriends   | Cities   |
|--------+---------------+----------|
| 1      | 10            | 10       |
+--------+---------------+----------+

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

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

SELECT IDENT_INCR('dbo.Pets') AS Result;

Резултат:

+----------+
| Result   |
|----------|
| 1        |
+----------+

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

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

SELECT 
  TABLE_SCHEMA, 
  TABLE_NAME,   
  IDENT_INCR(TABLE_SCHEMA + '.' + TABLE_NAME) AS IDENT_INCR  
FROM INFORMATION_SCHEMA.TABLES  
WHERE IDENT_INCR(TABLE_SCHEMA + '.' + TABLE_NAME) IS NOT NULL;
NULL>>

Резултат:

+----------------+----------------+--------------+
| TABLE_SCHEMA   | TABLE_NAME     | IDENT_INCR   |
|----------------+----------------+--------------|
| dbo            | ConstraintTest | 1            |
| dbo            | Event          | 1            |
| dbo            | Scoreboard     | 1            |
| dbo            | Pets           | 1            |
| dbo            | BestFriends    | 10           |
| dbo            | Cities         | 10           |
| dbo            | Colors         | 1            |
+----------------+----------------+--------------+

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

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

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

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

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

SELECT @@MAX_PRECISION AS [Max Precision];

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

+-----------------+
| Max Precision   |
|-----------------|
| 38              |
+-----------------+

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

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

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


  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 за поправяне на повредено архивиране на SQL - Преглед на продукта - Публикация на гост от Даниел Джоунс

  2. Изпълнете съхранена процедура в друга съхранена процедура в SQL сървър

  3. Как да конвертирате главни в малки букви в SQL Server – LOWER()

  4. Възможни начини за коригиране на проблема с повреда на метаданните на SQL Server

  5. Как да върна множество набори от резултати със SqlCommand?