Sök…


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

Detta kommer att returnera det senast tillagda identitetsvärdet som produceras på samma anslutning, inom det aktuella omfånget. I det här fallet 1 för den första raden i tabellen dbo.person.

@@IDENTITET

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;

Detta kommer att returnera den senast tillagda identiteten på samma anslutning, oavsett omfattning. I det här fallet, oavsett det aktuella värdet för identitetskolumnen på loggningsbordet, förutsatt att ingen annan aktivitet förekommer på förekomsten av SQL Server och att ingen annan utlöser brand från det här inlägget.

IDENT_CURRENT ( 'tabellnamn')

SELECT IDENT_CURRENT('dbo.person');

Detta kommer att välja det senast tillagda identitetsvärdet i den valda tabellen, oavsett anslutning eller omfattning.

@@ IDENTITET och 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

De sista två VÄLJ-uttalandevärdena är desamma.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow