Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
SQL-adatbázis a Microsoft Fabricben
A IDENT_CURRENT rendszerfüggvény egy meghatározott tábla vagy nézet számára generált utolsó identitásértéket adja vissza. Az utolsó generált identitásérték bármely ülésre és bármilyen területre vonatkozhat.
Transact-SQL szintaxis konvenciók
Szemantika
IDENT_CURRENT( 'table_or_view' )
Arguments
table_or_view
Az a tábla vagy nézet neve, amelynek azonosító értéke visszakerül. table_or_view a varchar, alapértelmezett nélkül.
Visszatérési típusok
numeric(@@MAXPRECISION,0))
Exceptions
Hibát ad NULL vissza, vagy ha a hívó nem rendelkezik engedéllyel az objektum megtekintéséhez.
Az SQL Serverben a felhasználó csak azoknak a biztonságos objektumoknak a metaadatait tekintheti meg, amelyek a felhasználó tulajdonában vannak, vagy amelyekhez a felhasználó engedélyt kapott. Ez azt jelenti, hogy metaadatot kibocsátó, beépített funkciók, IDENT_CURRENT például visszatérhetnek NULL , ha a felhasználónak nincs engedélye az objektumra. További információ: Metaadatok láthatóságának konfigurációja.
Megjegyzések
IDENT_CURRENThasonló az SQL Server 2000 (8.x) azonosító függvényeihezSCOPE_IDENTITY, és @@IDENTITY. Mindhárom függvény visszaadja az utolsó generált identitásértékeket. Azonban az egyes függvényekben az utolsó meghatározás hatóköre és ülése eltér:
-
IDENT_CURRENTvisszaadja az utolsó identitásértéket, amelyet egy adott tábla generált bármely ülésen és bármely hatókörben. -
@@IDENTITYvisszaadja az aktuális ülésszak bármely táblájához generált utolsó identitásértéket, minden hatókörben. -
SCOPE_IDENTITYvisszaadja az aktuális session bármely táblája és a jelenlegi scope-i tábla utolsó identitásértékét.
Ha az IDENT_CURRENT érték NULL (mivel a tábla soha nem tartalmazott sorokat, vagy lerövidítették), a IDENT_CURRENT függvény visszaadja a magértéket.
A sikertelen utasítások és tranzakciók megváltoztathatják a tábla aktuális identitását, és réseket hozhatnak létre az identitásoszlop értékeiben. Az identitásérték soha nem fordul vissza, még akkor sem, ha az a tranzakció, amely megpróbálta beilleszteni az értéket a táblába, nem van kötelezve. Ha például egy INSERTIGNORE_DUP_KEY utasítás egy szabálysértés miatt meghiúsul, a tábla jelenlegi identitásértéke továbbra is növekszik.
Ha olyan nézeten használjuk IDENT_CURRENT , amely tartalmaz csatlakozásokat, NULL visszaadja a választ. Ez függetlenül attól, hogy csak egy vagy több összekapcsolt táblázat rendelkezik-e Identity oszloptal.
Fontos
Legyen óvatos, amikor a következő generált identitásértéket előrejelzik IDENT_CURRENT . A tényleges generált érték eltérhet a IDENT_CURRENT plusztól IDENT_INCR , mivel más szekciók által végrehajtott beillesztések is vannak.
A IDENT_CURRENT függvény nem elérhető Fabric Data Warehouse azonosító oszlopaihoz.
Példák
A. A megadott tábla utolsó identitásértékét adja vissza
A következő példa adja vissza az adatbázisban a Person.Address tábla AdventureWorks2025 utolsó identitásértékét.
USE AdventureWorks2022;
GO
SELECT IDENT_CURRENT ('Person.Address') AS Current_Identity;
GO
B. Hasonlítsd össze az IDENT_CURRENT, @@IDENTITY és SCOPE_IDENTITY által visszaadott identitásértékeket
A következő példa bemutatja azokat az identitásértékeket, amelyeket , IDENT_CURRENT@@IDENTITY, és 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.*/