Recherche…


SCOPE_IDENTITY ()

CREATE TABLE dbo.logging_table(log_id INT IDENTITY(1,1) PRIMARY KEY, 
                               log_message VARCHAR(255))

CREATE TABLE dbo.person(person_id INT IDENTITY(1,1) PRIMARY KEY, 
                        person_name VARCHAR(100) NOT NULL)
GO;

CREATE TRIGGER dbo.InsertToADifferentTable ON dbo.person  
AFTER INSERT  
AS
    INSERT INTO dbo.logging_table(log_message)
    VALUES('Someone added something to the person table')
GO;

INSERT INTO dbo.person(person_name)
VALUES('John Doe')  

SELECT SCOPE_IDENTITY();

Cela retournera la valeur d'identité ajoutée la plus récente produite sur la même connexion, dans l'étendue actuelle. Dans ce cas, 1, pour la première ligne de la table dbo.person.

@@IDENTITÉ

CREATE TABLE dbo.logging_table(log_id INT IDENTITY(1,1) PRIMARY KEY, 
                               log_message VARCHAR(255))

CREATE TABLE dbo.person(person_id INT IDENTITY(1,1) PRIMARY KEY, 
                        person_name VARCHAR(100) NOT NULL)
GO;

CREATE TRIGGER dbo.InsertToADifferentTable ON dbo.person  
AFTER INSERT  
AS
    INSERT INTO dbo.logging_table(log_message)
    VALUES('Someone added something to the person table')
GO;

INSERT INTO dbo.person(person_name)
VALUES('John Doe')    

SELECT @@IDENTITY;

Cela retournera l'identité la plus récemment ajoutée sur la même connexion, indépendamment de l'étendue. Dans ce cas, quelle que soit la valeur actuelle de la colonne d'identité de logging_table, en supposant qu'aucune autre activité ne se produit sur l'instance de SQL Server et qu'aucun autre déclencheur ne soit déclenché à partir de cette insertion.

IDENT_CURRENT ('nom_table')

SELECT IDENT_CURRENT('dbo.person');

Cela sélectionnera la valeur d'identité la plus récemment ajoutée sur la table sélectionnée, indépendamment de la connexion ou de la portée.

@@ IDENTITY et MAX (ID)

SELECT MAX(Id) FROM Employees -- Display the value of Id in the last row in Employees table.
GO
INSERT INTO Employees (FName, LName, PhoneNumber) -- Insert a new row 
VALUES ('John', 'Smith', '25558696525') 
GO  
SELECT @@IDENTITY 
GO  
SELECT MAX(Id) FROM Employees -- Display the value of Id of the newly inserted row.  
GO

Les deux dernières valeurs des instructions SELECT sont les mêmes.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow