如何在SQLite中的insert查询中返回自动增量值?

时间:2010-09-30 05:52:18

标签: c# sqlite auto-increment

在我的项目中,我使用System.Data.SQLite。数据库具有表Tags,其中包含自动增量主域ID(类型Integer)。我写的时候:

using (SQLiteCommand command = conn.CreateCommand())
{
   command.CommandText = "insert into Tags(name) values(@name) returning into @id";
   command.Parameters.Add("@id", DbType.Int32).Direction = ParameterDirection.Output;
   command.ExecuteNonQuery();
}

Visual Studio表示不支持该操作。如何解决?

在线发生错误:

command.Parameters.Add("@id", DbType.Int32).Direction = ParameterDirection.Output;

3 个答案:

答案 0 :(得分:9)

我找到了工作查询:

SELECT last_insert_rowid()

答案 1 :(得分:0)

SQLite 3.35.0 及更新版本支持 RETURNING 子句:

<块引用>

RETURNING 子句旨在为应用程序提供由 SQLite 自动填充的列的值。

代码可能如下所示:

INSERT INTO Tags(name) VALUES(@name) RETURNING ID;

答案 2 :(得分:-1)

我建议使用存储过程。

IN SQL Server中有@@IDENTITY系统变量。它返回最后一个自动增量值

CREATE PROCEDURE SPGetLastAutoInc @name varchar, @lastAutoResult INT OUTPUT AS

INSERT INTO Tags(name) values(@name)


SET @lastAutoResult = @@IDENTITY

-- Return the number of all items ordered.
RETURN lastAutoResult 
GO