如何在没有标识列的SQL服务器中查找最后插入的行

mad*_*781 1 c# sql sql-server

我创建了如下表:

create table EmployeeDetails
(
    id int,
    name varchar(50),
    designation varchar(50),
    ReportingTo int
)
Run Code Online (Sandbox Code Playgroud)

插入的行如下:

insert into EmployeeDetails values(1, 'A', 'Developer', 3)
insert into EmployeeDetails values(5, 'E', 'CEO', 5)
insert into EmployeeDetails values(2, 'B', 'Developer', 3)
insert into EmployeeDetails values(3, 'C', 'Manager', 4)
insert into EmployeeDetails values(4, 'D', 'S.Manager', 5)
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何识别表中最后插入的行?

使用的查询:

select IDENT_CURRENT('EmployeeDetails')
Select SCOPE_IDENTITY()
Run Code Online (Sandbox Code Playgroud)

但我仍然没有找到答案.

欢迎回复

Gor*_*off 6

这个评论太长了.

您对关系数据库中的表有一个基本的误解.它们代表无序集.所以,表中没有"最后一行".在创建表和/或将数据加载到其中时,必须包含有关行排序的信息.

在SQL Server中,最简单的方法是标识列.这就是为什么许多表被定义为:

create table EmployeeDetails (
    id int identity primary key,
    name varchar(50),
    designation varchar(50),
    ReportingTo int
);
Run Code Online (Sandbox Code Playgroud)

您还可以添加默认插入时间列:

create table EmployeeDetails (
    id int identity primary key,
    name varchar(50),
    designation varchar(50),
    ReportingTo int,
    CreatedAt datetime default gettime()
);
Run Code Online (Sandbox Code Playgroud)

但是,您可以拥有多个具有相同datetime值的行.