gpt4 book ai didi

SQLite 使用内部插入中的 id 插入表

转载 作者:行者123 更新时间:2023-12-03 06:26:58 24 4
gpt4 key购买 nike

我正在尝试同时插入父级和子级。

我的想法是插入父级,使用SELECT last_insert_rowid() AS [Id]获取id,并使用此id插入子级

我可以让每个部分独立工作,但不能作为一个整体。这是我目前拥有的:

INSERT INTO ParentTable (Col1) 
VALUES( 'test')
SELECT last_insert_rowid() AS [Id]

上面的作品 - 到目前为止一切顺利。现在我想在子插入中使用此结果。这就是我所拥有的:

INSERT INTO ChildTable (col1, col2, ParentId) 
VALUES( 1, 2, SELECT Id FROM (
INSERT INTO ParentTable (Col1)
VALUES( 'test')
SELECT last_insert_rowid() AS [Id]
);

我收到此错误:

near "SELECT": syntax error:

有人能指出我正确的方向吗?

最佳答案

您不能在 SELECT 语句中使用 INSERT。您应该先插入,然后使用最后插入的 id:

INSERT INTO ParentTable (Col1) VALUES( 'test');

INSERT INTO ChildTable (col1, col2, ParentId)
VALUES(1,2, (SELECT last_insert_rowid()));

由于您想要插入许多带有父 ID 的记录,因此有一个解决方法:

BEGIN TRANSACTION;
CREATE TEMPORARY TABLE IF NOT EXISTS temp(id integer);
DELETE FROM temp;
INSERT INTO ParentTable (Col1) VALUES( 'test');
INSERT INTO temp SELECT last_insert_rowid();
INSERT INTO ChildTable (col1, col2, ParentId)
VALUES(1,2, (SELECT id FROM temp LIMIT 1));
.............
COMMIT;
DROP TABLE temp;

或者您可以创建一个永久表来实现此效果。

关于SQLite 使用内部插入中的 id 插入表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44352667/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com