Ricerca…


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

Ciò restituirà il valore di identità aggiunto più recente prodotto sulla stessa connessione, nell'ambito corrente. In questo caso, 1, per la prima riga nella tabella 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;

Ciò restituirà l'identità aggiunta più di recente sulla stessa connessione, indipendentemente dall'ambito. In questo caso, qualunque sia il valore corrente della colonna Identity su logging_table, supponendo che non si stia verificando un'altra attività sull'istanza di SQL Server e nessun altro trigger generato da questo inserimento.

IDENT_CURRENT ( 'tablename')

SELECT IDENT_CURRENT('dbo.person');

Questo selezionerà il valore dell'identità aggiunto più recentemente nella tabella selezionata, indipendentemente dalla connessione o dall'ambito.

@@ IDENTITY e 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

Gli ultimi due valori delle istruzioni SELECT sono gli stessi.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow