如何在SQLite中为多行返回插入的id?

MaY*_*YaN 7 sqlite

给出一张表:

CREATE TABLE Foo(
    Id INTEGER PRIMARY KEY AUTOINCREMENT,
    Name TEXT
);
Run Code Online (Sandbox Code Playgroud)

如何使用以下命令返回同时插入的多行的ID:

INSERT INTO Foo (Name) VALUES
('A'),
('B'),
('C');
Run Code Online (Sandbox Code Playgroud)

我知道last_insert_rowid()但我没有找到任何将它用于多行的示例.

在这个SQL Server示例中可以看到我想要实现的目标:

DECLARE @InsertedRows AS TABLE (Id BIGINT);
INSERT INTO [Foo] (Name) OUTPUT Inserted.Id INTO @InsertedRows VALUES 
    ('A'),
    ('B'),
    ('C');
SELECT Id FROM @InsertedRows;
Run Code Online (Sandbox Code Playgroud)

很感谢任何形式的帮助.

小智 4

使用 RETURNING 子句。该功能自版本 3.35.0 (2021-03-12) 起可用。

对于你的例子:

INSERT INTO "Foo" ("Name") VALUES
('A'),
('B'),
('C')
RETURNING "Id";
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅此文档链接:https://www.sqlite.org/lang_returning.html