gpt4 book ai didi

android - SQLite 脚本变量

转载 作者:行者123 更新时间:2023-11-29 02:12:39 25 4
gpt4 key购买 nike

我需要大量填充我的 SQLite 数据库——最好使用脚本而不是代码。

我想这样做(MySQL 语法)但对于 SQLite 但我不确定是否可以在脚本中定义变量:

INSERT INTO `parent` (id, name) values(NULL, "some name!");
SET @parentId= last_insert_rowid();
INSERT INTO `child` (id, parentId, name, ) values (NULL, @parentId, 'some name!);

当我尝试在我的 SQLite 脚本中声明变量时,SQLite 抛出错误。这可以在 SQLite 中完成吗?

最佳答案

对于这种情况,您可以在没有脚本变量的情况下使用函数 last_insert_rowid():

insert into parent (id, name) values (NULL, 'some name!');

然后:

insert into child (id, parentId, name) values (NULL, last_insert_rowid(), 'child name!');

成绩单:

SQLite version 3.7.6.3
sqlite> create table parent (id integer primary key, name);
sqlite> create table child (id integer primary key, parentId integer, name);
sqlite> insert into parent (id, name) values (NULL, 'some name!');
sqlite> insert into child (id, parentId, name) values (NULL, last_insert_rowid(), 'child name!');
sqlite> select * from parent;
1|some name!
sqlite> select * from child;
1|1|child name!
sqlite>

如果您需要将值保留一段时间(例如通过多次插入),请使用临时表:

sqlite> create temp table stash (id integer primary key, parentId integer);
sqlite> insert into parent (id, name) values (NULL, 'another name!');
sqlite> replace into stash values (1, last_insert_rowid());
sqlite> insert into child (id, parentId, name) values (NULL, (select parentID from stash where id = 1), 'also a name!');
sqlite> select * from parent;
1|some name!
2|another name!
sqlite> select * from child;
1|1|child name!
2|2|also a name!
sqlite>

关于android - SQLite 脚本变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6323941/

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