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.