Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-databas i Microsoft Fabric
Returnerar det senaste identitetsvärdet som genererats för en specificerad tabell eller vy. Det sista identitetsvärdet som genereras kan vara för vilken session som helst och vilket scope som helst.
Transact-SQL syntaxkonventioner
Syntax
IDENT_CURRENT( 'table_or_view' )
Arguments
table_or_view
Är namnet på tabellen eller vyn vars identitetsvärde returneras.
table_or_view är varchar, utan standard.
Returtyper
numerisk(@@MAXPRECISION,0))
Exceptions
Returnerar NULL vid fel eller om en anropare inte har behörighet att visa objektet.
I SQL Server kan en användare bara visa metadata för skyddsbara objekt som användaren äger eller som användaren har beviljats behörighet till. Detta innebär att inbyggda funktioner som IDENT_CURRENT metadata kan returnera NULL om användaren inte har någon behörighet på objektet. För mer information, se inställningar för metadatasynlighet.
Anmärkningar
IDENT_CURRENT liknar SQL Server 2000 (8.x) identitetsfunktionerna SCOPE_IDENTITY och @@IDENTITY. Alla tre funktioner returnerar senast genererade identitetsvärden. Dock skiljer sig omfattningen och sessionen där den sista definieras i var och en av dessa funktioner:
- IDENT_CURRENT returnerar det senaste identitetsvärdet som genererats för en specifik tabell i varje session och varje scope.
- @@IDENTITY returnerar det senaste identitetsvärdet som genererats för en tabell i den aktuella sessionen, över alla scopes.
- SCOPE_IDENTITY returnerar det senaste identitetsvärdet som genererats för varje tabell i den aktuella sessionen och det aktuella scope.
När IDENT_CURRENT-värdet är NULL (eftersom tabellen aldrig har innehållit rader eller har trunkerats), returnerar IDENT_CURRENT-funktionen frövärdet.
Misslyckade satser och transaktioner kan ändra den aktuella identiteten för en tabell och skapa luckor i identitetskolumnens värden. Identitetsvärdet rullas aldrig tillbaka även om transaktionen som försökte infoga värdet i tabellen inte är committad. Till exempel, om ett INSERT-uttalande misslyckas på grund av ett IGNORE_DUP_KEY-brott, ökar fortfarande det aktuella identitetsvärdet för tabellen.
När man använder IDENT_CURRENT på en vy som innehåller joins returneras NULL. Detta gäller oavsett om bara en eller flera anslutna tabeller har en Identitetskolumn.
Viktigt!
Var försiktig när du använder IDENT_CURRENT för att förutsäga nästa genererade identitetsvärde. Det faktiska genererade värdet kan skilja sig från IDENT_CURRENT plus IDENT_INCR på grund av insättningar som utförts av andra sessioner.
Examples
A. Returnerar det senaste identitetsvärdet som genererats för en specificerad tabell
Följande exempel returnerar det senaste identitetsvärdet som genererats för Person.Address tabellen i databasen AdventureWorks2025 .
USE AdventureWorks2022;
GO
SELECT IDENT_CURRENT ('Person.Address') AS Current_Identity;
GO
B. Jämförelse av identitetsvärden som returneras av IDENT_CURRENT, @@IDENTITY och SCOPE_IDENTITY
Följande exempel visar de olika identitetsvärden som returneras av IDENT_CURRENT, @@IDENTITY, och SCOPE_IDENTITY.
USE AdventureWorks2022;
GO
IF OBJECT_ID(N't6', N'U') IS NOT NULL
DROP TABLE t6;
GO
IF OBJECT_ID(N't7', N'U') IS NOT NULL
DROP TABLE t7;
GO
CREATE TABLE t6(id INT IDENTITY);
CREATE TABLE t7(id INT IDENTITY(100,1));
GO
CREATE TRIGGER t6ins ON t6 FOR INSERT
AS
BEGIN
INSERT t7 DEFAULT VALUES
END;
GO
--End of trigger definition
SELECT id FROM t6;
--IDs empty.
SELECT id FROM t7;
--ID is empty.
--Do the following in Session 1
INSERT t6 DEFAULT VALUES;
SELECT @@IDENTITY;
/*Returns the value 100. This was inserted by the trigger.*/
SELECT SCOPE_IDENTITY();
/* Returns the value 1. This was inserted by the
INSERT statement two statements before this query.*/
SELECT IDENT_CURRENT('t7');
/* Returns value inserted into t7, that is in the trigger.*/
SELECT IDENT_CURRENT('t6');
/* Returns value inserted into t6. This was the INSERT statement four statements before this query.*/
-- Do the following in Session 2.
SELECT @@IDENTITY;
/* Returns NULL because there has been no INSERT action
up to this point in this session.*/
SELECT SCOPE_IDENTITY();
/* Returns NULL because there has been no INSERT action
up to this point in this scope in this session.*/
SELECT IDENT_CURRENT('t7');
/* Returns the last value inserted into t7.*/
Se även
@@IDENTITY (Transact-SQL)
SCOPE_IDENTITY (Transact-SQL)
IDENT_INCR (Transact-SQL)
IDENT_SEED (Transact-SQL)
Uttryck (Transact-SQL)
Systemfunktioner (Transact-SQL)