Szukaj…


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

Zwróci to ostatnio dodaną wartość tożsamości wygenerowaną dla tego samego połączenia, w bieżącym zakresie. W tym przypadku 1 dla pierwszego wiersza w tabeli dbo.person.

@@TOŻSAMOŚĆ

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;

Spowoduje to zwrócenie ostatnio dodanej tożsamości w tym samym połączeniu, niezależnie od zakresu. W tym przypadku, niezależnie od bieżącej wartości kolumny tożsamości w dzienniku_tabela, przy założeniu, że nie wystąpi żadna inna aktywność na instancji SQL Server i żadne inne wyzwalacze nie zostaną uruchomione z tej wstawki.

IDENT_CURRENT („tablename”)

SELECT IDENT_CURRENT('dbo.person');

Spowoduje to wybranie ostatnio dodanej wartości tożsamości w wybranej tabeli, niezależnie od połączenia lub zakresu.

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

Dwie ostatnie wartości instrukcji SELECT są takie same.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow