首页 > 解决方案 > 从最后一个条目中获取 id

问题描述

我需要将产品插入到 ProductDB 表中,同时从我刚刚插入的产品中获取 id,因此我可以在下一个查询中将其用作外键我一直在研究不同的方法,例如“select 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 + " )");
   }
}

标签: c#sqlwinformssqlite

解决方案


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

推荐阅读