SQLite скрипт Vars - PullRequest
       2

SQLite скрипт Vars

2 голосов
/ 12 июня 2011

Мне нужно массово заполнить базу данных SQLite & mdash; в идеале использовать скрипт, а не код.

Я хотел бы сделать это (синтаксис 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?

Ответы [ 2 ]

1 голос
/ 13 июня 2011

Вы можете использовать функцию last_insert_rowid() без сценария var для этого случая:

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> 
0 голосов
/ 12 июня 2011

К сожалению, вы не можете объявить такую ​​переменную в скрипте SQLite. Кроме того, AFAIK все заявления не будут выполнены, кроме первого. Также смотрите ЗДЕСЬ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...