Suche…


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

Dies gibt den zuletzt hinzugefügten Identitätswert zurück, der für dieselbe Verbindung innerhalb des aktuellen Bereichs erzeugt wurde. In diesem Fall 1 für die erste Zeile in der Tabelle dbo.person.

@@IDENTITÄT

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;

Dadurch wird die zuletzt hinzugefügte Identität für dieselbe Verbindung unabhängig vom Bereich zurückgegeben. Unabhängig vom aktuellen Wert der Identitätsspalte in logging_table gilt in diesem Fall, dass in der Instanz von SQL Server keine anderen Aktivitäten ausgeführt werden und keine anderen Auslöser von dieser Einfügung ausgelöst werden.

IDENT_CURRENT ('Tabellenname')

SELECT IDENT_CURRENT('dbo.person');

Dadurch wird der zuletzt hinzugefügte Identitätswert für die ausgewählte Tabelle ausgewählt, unabhängig von Verbindung oder Bereich.

IDENTITY und 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

Die Werte der letzten beiden SELECT-Anweisungen sind gleich.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow