SQLite Вставить или Заменить привело к дублированию на совпадающий идентификатор - PullRequest
0 голосов
/ 03 августа 2011

Это ссылка на предыдущую ветку по оптимизации нижеприведенного запроса.

У меня есть родительский TABLE с 44 полями, и в настоящее время он содержит около 60000 записей размером около 25 МБ.Я выполняю инкрементные обновления / вставки в эту таблицу из отдельного ТАБЛИЦЫ с идентичными полями / именами полей.

INSERT OR REPLACE INTO Parent (F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,F13,F14,F15,F16,F17,F18,F19,F20,F21,F22,F23,F24,F25,F26,F27,F28,F29,F30,F31,F32,F33,F34,F35,F36,F37,F38,F39,F40,F41,F42,F43,F44) SELECT NULL,u.F2,u.F3,u.F4,u.F5,u.F6,u.F7,u.F8,u.F9,u.F10,u.F11,u.F12,u.F13,u.F14,u.F15,u.F16,u.F17,u.F18,u.F19,u.F20,u.F21,u.F22,u.F23,u.F24,u.F25,u.F26,u.F27,u.F28,u.F29,u.F30,u.F31,u.F32,u.F33,u.F34,u.F35,u.F36,u.F37,u.F38,u.F39,u.F40,u.F41,u.F42,u.F43,u.F44 FROM ParentTemp u LEFT JOIN Parent c ON (u.F2 = c.F2);

F1 - это поле с автоинкрементным идентификатором, поэтому выбирается NULL для INSERT.F2 - это уникальный идентификатор, но это поле TEXT.Таблица ParentTemp периодически заполняется до 10000 записей - они затем сопоставляются с существующими записями в Parent в текстовом поле F2.

Недавно я дважды импортировал один и тот же набор данныхпо ошибке - и я обнаружил, что записи были продублированы в поле F2.ТАБЛИЦА была создана без ON CONFLICT на F2 (который в любом случае не является первичным ключом).

Есть идеи, почему дублируются записи / как избежать?ТИА

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