Buscar..


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();

Esto devolverá el valor de identidad agregado más recientemente producido en la misma conexión, dentro del alcance actual. En este caso, 1, para la primera fila en la tabla dbo.person.

@@IDENTIDAD

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;

Esto devolverá la identidad agregada más recientemente en la misma conexión, independientemente del alcance. En este caso, sea cual sea el valor actual de la columna de identidad en logging_table, supongamos que no se está produciendo ninguna otra actividad en la instancia de SQL Server y que no se activan otros activadores desde esta inserción.

IDENT_CURRENT ('nombre de tabla')

SELECT IDENT_CURRENT('dbo.person');

Esto seleccionará el último valor de identidad agregado en la tabla seleccionada, independientemente de la conexión o el alcance.

@@ IDENTIDAD y 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

Los dos últimos valores de instrucciones SELECT son los mismos.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow