在我的项目中,我使用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;
答案 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