Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-database in Microsoft Fabric
Geeft de laatst gegenereerde identiteitswaarde terug voor een opgegeven tabel of weergave. De laatste gegenereerde identiteitswaarde kan voor elke sessie en elke scope zijn.
Transact-SQL syntaxis-conventies
Syntaxis
IDENT_CURRENT( 'table_or_view' )
Arguments
table_or_view
Is de naam van de tabel of weergave waarvan de identiteitswaarde wordt teruggegeven.
table_or_view is varchar, zonder standaard.
Retourtypen
numeric(@@MAXPRECISION,0))
Exceptions
Retourneert NULL bij fout of als een aanroeper niet gemachtigd is om het object weer te geven.
In SQL Server kan een gebruiker alleen de metagegevens bekijken van beveiligbare items waarvan de gebruiker eigenaar is of waarvoor de gebruiker is gemachtigd. Dit betekent dat metadata-uitzendende, ingebouwde functies zoals IDENT_CURRENT NULL kunnen teruggeven als de gebruiker geen toestemming heeft voor het object. Zie Zichtbaarheidsconfiguratie voor metagegevensvoor meer informatie.
Opmerkingen
IDENT_CURRENT lijkt op de SQL Server 2000 (8.x) identiteitsfuncties SCOPE_IDENTITY en @@IDENTITY. Alle drie de functies geven laatst gegenereerde identiteitswaarden terug. De scope en sessie waarop de laatste wordt gedefinieerd verschillen echter in elk van deze functies:
- IDENT_CURRENT geeft de laatst gegenereerde identiteitswaarde terug voor een specifieke tabel in elke sessie en elke scope.
- @@IDENTITY geeft de laatst gegenereerde identiteitswaarde terug voor elke tabel in de huidige sessie, over alle scopes.
- SCOPE_IDENTITY geeft de laatst gegenereerde identiteitswaarde terug voor elke tabel in de huidige sessie en de huidige scope.
Wanneer de IDENT_CURRENT-waarde NULL is (omdat de tabel nooit rijen heeft bevat of is afgekapt), geeft de IDENT_CURRENT-functie de seedwaarde terug.
Mislukte statements en transacties kunnen de huidige identiteit van een tabel veranderen en gaten creëren in de identiteitskolomwaarden. De identiteitswaarde wordt nooit teruggerold, ook al is de transactie die probeerde de waarde in de tabel in te voegen niet committed. Als bijvoorbeeld een INSERT-instructie faalt door een IGNORE_DUP_KEY-overtreding, wordt de huidige identiteitswaarde voor de tabel nog steeds verhoogd.
Wanneer IDENT_CURRENT wordt gebruikt op een view die joins bevat, wordt NULL teruggegeven. Dit geldt ongeacht of slechts één of meer dan één gekoppelde tabel een Identiteit-kolom heeft.
Belangrijk
Wees voorzichtig bij het gebruik van IDENT_CURRENT om de volgende gegenereerde identiteitswaarde te voorspellen. De daadwerkelijk gegenereerde waarde kan verschillen van IDENT_CURRENT plus IDENT_INCR vanwege inserties uitgevoerd door andere sessies.
Voorbeelden
Eén. Het teruggeven van de laatste identiteitswaarde die voor een gespecificeerde tabel is gegenereerd
Het volgende voorbeeld geeft de laatst gegenereerde identiteitswaarde voor de Person.Address tabel in de AdventureWorks2025 database terug.
USE AdventureWorks2022;
GO
SELECT IDENT_CURRENT ('Person.Address') AS Current_Identity;
GO
B. Het vergelijken van identiteitswaarden die door IDENT_CURRENT, @@IDENTITY en SCOPE_IDENTITY worden teruggegeven
Het volgende voorbeeld toont de verschillende identiteitswaarden die worden teruggegeven door IDENT_CURRENT, @@IDENTITY, en 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.*/
Zie ook
@@IDENTITY (Transact-SQL)
SCOPE_IDENTITY (Transact-SQL)
IDENT_INCR (Transact-SQL)
IDENT_SEED (Transact-SQL)
Expressies (Transact-SQL)
Systeemfuncties (Transact-SQL)