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
Visszaadja az utolsó, egy meghatározott tábla vagy nézet számára generált identitásértéket. 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
Null értéket ad vissza hiba esetén, 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 metaadatokat kibocsátó, beépített funkciók, mint az IDENT_CURRENT, akkor is visszaadhatják a NULL-ot, 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_CURRENT hasonló az SQL Server 2000 (8.x) identitásfüggvényeihez, SCOPE_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_CURRENT visszaadja az utolsó identitásértéket, amelyet egy adott tábla generált bármely ülésen és bármely hatókörben.
- @@IDENTITY visszaadja az aktuális munkafolyamat bármely táblájához generált utolsó identitásértéket minden területen.
- SCOPE_IDENTITY adja vissza az aktuális ülésszak bármely táblája és a jelenlegi hatókör utolsó identitásértékét.
Ha a IDENT_CURRENT érték NULL (mert 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. Például, ha egy INSERT utasítás IGNORE_DUP_KEY megsértés miatt megbukik, a tábla aktuális identitásértéke továbbra is növelik.
Ha IDENT_CURRENT-t használunk egy olyan nézeten, amely csatlakozásokat tartalmaz, a NULL visszatér. Ez függetlenül attól, hogy csak egy vagy több összekapcsolt táblázat rendelkezik-e Identity oszloptal.
Fontos
Legyen óvatos, amikor IDENT_CURRENT segítségével előrejelzid a következő generált identitásértéket. A tényleges generált érték eltérhet a IDENT_CURRENT plusz IDENT_INCR-tól más ülések által végrehajtott beillesztések miatt.
Példák
A. A megadott tábla utolsó identitásértékének visszaküldése
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. Összehasonlítva azonossági értékeket, amelyeket IDENT_CURRENT, @@IDENTITY és SCOPE_IDENTITY
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.*/
Lásd még:
@@IDENTITY (Transact-SQL)
SCOPE_IDENTITY (Transact-SQL)
IDENT_INCR (Transact-SQL)
IDENT_SEED (Transact-SQL)
Kifejezések (Transact-SQL)
Rendszerfunkciók (Transact-SQL)