从最后一个条目中获取 id

Posted

技术标签:

【中文标题】从最后一个条目中获取 id【英文标题】:Get id from the last entry 【发布时间】:2021-12-09 18:29:04 【问题描述】:

我需要将一个产品插入到 ProductDB 表中,同时从我刚刚插入的产品中获取 id,所以我可以在下一个查询中将它用作外键我一直在寻找不同的方法,例如“选择 last_insert_rowid()" 和 "SCOPE_IDENTITY()" 但我不能让它工作,我该如何让它工作

public static void SaveProduct(ProductModel product)
  
   using (IDbConnection cnn = new SQLiteConnection(LoadConnectionString()))
   
      cnn.Execute("INSERT INTRO ProductDB (Name, Price) VALUES (@Name, @Price);", 
      product);

      string ForeignKey = "the id from the last entry from the query above";

      cnn.execute("INSERT INTO ImageDB (Filename, Path, FK_Product) VALUES (@Filename, @Path," + ForeignKey + " )");
   

【问题讨论】:

这不是关于使用 Visual Studio 的问题,所以我删除了那个标签。 见SELECT last_insert_rowid()。您的表当然必须在 ProductDB 表中有一个自动增量字段才能正常工作。 另见RETURNING子句 【参考方案1】:

在 SQL Server 中有 3 个函数(方法)用于从表中获取最后插入的 id。

IDENT_CURRENT() - 返回给定表的最后插入的标识值。

SCOPE_IDENTITY() - 返回插入到当前会话和当前范围内任何表的标识列中的最后一个标识值。

@@IDENTITY - 返回当前会话中任何表中最后插入的标识值,与范围无关。

我们需要 SCOPE_IDENTITY(),所以 注意!!! 该函数必须在当前作用域中使用,该作用域位于insert命令中。

例子:

declare 
    @new_id integer;
INSERT INTRO ProductDB (Name, Price) VALUES (@Name, @Price);
SET @new_id = SCOPE_IDENTITY();

【讨论】:

以上是关于从最后一个条目中获取 id的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Eloquent/MySQL 如何从每个父记录的最后一个条目中获取去年的记录?

获取最后保存的条目的 id

获取数据组的最新条目

从最近插入的数据库条目的特定行获取信息

如何使用新条目复制行

从 GoLang 中的 mongodb 获取最后插入的元素