Microsoft SQL Server
Laatst ingevoerde identiteit
Zoeken…
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();
Dit retourneert de meest recent toegevoegde identiteitswaarde die op dezelfde verbinding is geproduceerd, binnen de huidige scope. In dit geval 1 voor de eerste rij in de tabel dbo.person.
@@IDENTITEIT
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;
Dit retourneert de meest recent toegevoegde identiteit op dezelfde verbinding, ongeacht het bereik. In dit geval, ongeacht de huidige waarde van de identiteitskolom op logging_table, ervan uitgaande dat er geen andere activiteit plaatsvindt op het exemplaar van SQL Server en geen andere triggers worden geactiveerd vanuit deze invoeging.
IDENT_CURRENT ( 'tablename')
SELECT IDENT_CURRENT('dbo.person');
Hiermee wordt de meest recent toegevoegde identiteitswaarde op de geselecteerde tabel geselecteerd, ongeacht de verbinding of het bereik.
@@ IDENTITY en 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 waarden van de laatste twee SELECT-instructies zijn hetzelfde.
Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow