C# 获取最后插入的id

C# 获取最后插入的id,c#,sql-server-ce,C#,Sql Server Ce,如果使用SQL Server CE,是否有任何方法可以获取最后插入的ID?我有两个表,当创建新记录时,我也希望能够将ID保存在第二个表中。使用此查询: INSERT INTO Persons (FirstName) VALUES ('Joe'); SELECT ID AS LastID FROM Persons WHERE ID = @@Identity; 或者您可以查看此链接以了解更多信息: 将检索SQL Server中最后一个自动生成的标识值 假设id的较高值总是较新,那么: SELEC

如果使用SQL Server CE,是否有任何方法可以获取最后插入的ID?我有两个表,当创建新记录时,我也希望能够将ID保存在第二个表中。

使用此查询:

INSERT INTO Persons (FirstName) VALUES ('Joe');
SELECT ID AS LastID FROM Persons WHERE ID = @@Identity;
或者您可以查看此链接以了解更多信息:


将检索SQL Server中最后一个自动生成的标识值

假设
id
的较高值总是较新,那么:

SELECT TOP 1 id FROM your_table ORDER BY id DESC
或:


我希望这个例子能对你有所帮助

INSERT INTO jobs (job_desc,min_level,max_level) VALUES ('A new job', 25, 100);

SELECT job_id FROM jobs WHERE job_id = @@IDENTITY;

这对我很管用

SELECT TOP (1) your_id FROM your_table ORDER BY your_id DESC

这并不能解释可能存在的并发问题。您正在引入竞争条件,希望在插入另一条记录之前执行
SELECT MAX(id)
。我选择使用
@@Identity
,因为SQL CE不支持
范围\u Identity()
。@@Identity假定select在同一会话中运行。从OP上看,情况并不清楚,因此我认为这是针对给定信息的更好答案。这可能有效,但比批准的答案慢得多。此外,我认为这不会考虑可能的并发性问题,如Brissles答案中的第一条评论所述。
INSERT INTO jobs (job_desc,min_level,max_level) VALUES ('A new job', 25, 100);

SELECT job_id FROM jobs WHERE job_id = @@IDENTITY;
SELECT TOP (1) your_id FROM your_table ORDER BY your_id DESC