Sqlite.Как создать индекс в прикрепленной БД? - PullRequest
5 голосов
/ 15 ноября 2011

У меня проблема с добавлением индекса в базу данных памяти, присоединенную к основной базе данных.

1) Я открываю базу данных (F) из файла

2) Присоедините базу данных: memory: (M)

3) Создание таблиц в базе данных M

4) Копировать данные из F в M

Я также хотел бы создать индекс в базе данных M, но не знаю, как это сделать. Этот код создает индекс, но в базе данных F:

sQuery = "CREATE INDEX IF NOT EXISTS [INDID] ON [PANEL]([ID]  ASC);";

Я пытался добавить квалификатор имени перед именем таблицы следующим образом:

sQuery = "CREATE INDEX IF NOT EXISTS [INDID] ON [M.PANEL]([ID]  ASC);";

но SQLite возвращает сообщение о том, что столбец main.M.PANEL не существует.

Что я могу сделать?

Ответы [ 2 ]

8 голосов
/ 15 ноября 2011

просто поставьте квадратные скобки вокруг префикса [M]. [Panel] или просто пропустите их

UPD: вы должны установить префикс перед index имя вместо имени таблицы:

sqlite> attach database ":memory:" as m;
sqlite> .databases
seq  name             file
---  ---------------  ----------------------------------------------
0    main
2    m
sqlite> create table m.users (id int, name TEXT);
sqlite> create unique index m.qwe on users (name);
sqlite> insert into m.users VALUES(2,'asd');
sqlite> insert into m.users VALUES(3,'asd');
Error: column name is not unique
0 голосов
/ 06 июля 2018

Попробуйте это:

CREATE UNIQUE INDEX `idxuserID` ON `userFlag` (
    `userID`
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...