sql >> Databasteknik >  >> RDS >> Sqlserver

Returnera inkrementvärdet för en identitetskolumn i SQL Server

I SQL Server kan du använda T-SQL IDENT_INCR() funktion för att returnera ökningsvärdet för en identitetskolumn. Detta är inkrementvärdet som anges när identitetskolumnen skapas.

Syntax

Syntaxen ser ut så här:

IDENT_INCR ( 'table_or_view' )

tabell_eller_vy argument är ett uttryck som anger tabellen eller vyn som ska kontrolleras efter ett giltigt identitetsökningsvärde.

Exempel 1 – Grundläggande användning

Här är ett grundläggande kodexempel.

SELECT IDENT_INCR('Pets') AS Result;

Resultat:

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

I detta fall är identitetsökningsvärdet 1.

Här är en annan fråga som kontrollerar fler tabeller.

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

Resultat:

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

Exempel 2 – Inklusive schemat

Du kan också inkludera schemat i argumentet.

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

Resultat:

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

Exempel 3 – Kontrollera alla tabeller i databasen

Här är ett exempel på hur du kontrollerar alla tabeller i databasen för deras identitetsfrövärde.

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;

Resultat:

+----------------+----------------+--------------+
| 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            |
+----------------+----------------+--------------+

Om returvärdet

Returvärdet för IDENT_INCR() är numeric(@@MAXPRECISION,0)) . Det betyder att det är en numerisk datatyp med en fast precision och skala.

Precisionen beror på servern. @@MAXPRECISION argument returnerar nivån som används av decimala och numeriska datatyper som för närvarande är inställda på servern. Precisionen anger det maximala totala antalet decimalsiffror (den inkluderar de till vänster och höger om decimaltecknet).

Det andra argumentet anger en skala på 0 , vilket betyder att det inte finns några decimalsiffror till höger om decimalen.

Du kan köra följande fråga för att hitta den precisionsnivå som för närvarande är inställd på din server:

SELECT @@MAX_PRECISION AS [Max Precision];

Här är resultatet på mitt system:

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

Skapa en identitetskolumn

Du kan skapa en identitetskolumn genom att använda IDENTITY() egenskap i din CREATE TABLE eller ALTER TABLE påstående.

Ett annat sätt att skapa en identitetskolumn är IDENTITY() fungera. Detta gör att du kan skapa en identitetskolumn när du använder en SELECT INTO uttalande för att överföra data från en källa till en annan.


  1. Hur kan jag ändra befintlig kolumn som identitet i PostgreSQL 11.1

  2. EXP() Exempel i SQL Server

  3. Tilldela bilder till ListView-objekt Tutorial-03

  4. Hur många databasindex är för många?