powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Получить аналог last_insert_rowid для множественной вставки.
6 сообщений из 6, страница 1 из 1
Получить аналог last_insert_rowid для множественной вставки.
    #37635527
vinil_spb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый!

есть таблица
Код: sql
1.
2.
3.
4.
5.
CREATE TABLE t1(
 _key1  INTEGER NOT NULL,
 _key2  INTEGER NOT NULL,
PRIMARY KEY(_key1 , _key2)
);



есть транзакция:

Код: sql
1.
2.
3.
4.
5.
6.
 BEGIN;
  INSERT INTO table(_key1, _key2) VALUES( (SELECT max(_key1) WHERE _key2 = value1) + 1) , value1    );
  INSERT INTO table(_key1, _key2) VALUES( (SELECT max(_key1) WHERE _key2 = value2) + 1) , value2    );
  .....
  INSERT INTO table(_key1, _key2) VALUES( (SELECT max(_key1) WHERE _key2 = valueN) + 1) , valueN    );
 COMMIT;



Есть ли возможность получить запросом или функцией набор из last_insert_rowid? N - Известно.
вообщем список значений вставленный _key1? Когда вставляешь по одному, то last_insert_rowid(), а когда все вместе?
...
Рейтинг: 0 / 0
Получить аналог last_insert_rowid для множественной вставки.
    #37635733
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем? Что ты с этим списком делать потом собираешься?
И вообще, если у тебя уже есть первичный ключ - _key1+_key2 зачем еще с абстрактными номерами возиться?
...
Рейтинг: 0 / 0
Получить аналог last_insert_rowid для множественной вставки.
    #37636652
RXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vinil_spb,

После первой же вставки база блокируется и до окончания транзакции блокировка не снимается. По этому генерируемые идентификаторы строго последовательны и не имеют пропусков. Достаточно узнать первый и последний.
...
Рейтинг: 0 / 0
Получить аналог last_insert_rowid для множественной вставки.
    #37637682
vinil_spb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White OwlА зачем? Что ты с этим списком делать потом собираешься?
И вообще, если у тебя уже есть первичный ключ - _key1+_key2 зачем еще с абстрактными номерами возиться?

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

RXLvinil_spb,
После первой же вставки база блокируется и до окончания транзакции блокировка не снимается. По этому генерируемые идентификаторы строго последовательны и не имеют пропусков. Достаточно узнать первый и последний.

Они строго последовательны для каждого key2 со значением value_i. Для нескольких значений key2 они могут быть идентичны. Вот и интересует есть ли механизм вытащить данные ключи в порядке попадания в таблицу или это можно сделать только если изначально просмотреть все мах(key1) для каждого key2, потом посчитать количество вхождений для каждого значения key2 и аккуратненько в массивчик записывать key1 основываясь на этом.
...
Рейтинг: 0 / 0
Получить аналог last_insert_rowid для множественной вставки.
    #37638838
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vinil_spbWhite OwlА зачем? Что ты с этим списком делать потом собираешься?
И вообще, если у тебя уже есть первичный ключ - _key1+_key2 зачем еще с абстрактными номерами возиться?

в контексте задачи данные ключи сохраняют порядок получения данных, что критично при сортировке во время вывода данных.Это очень даже неправильное понимание ситуации.
Если ты хочешь сохранять порядок сортировки, добавь в таблицу специальное поле, в которое пиши время вставки.
Завязываться на rowid для сортировки не стоит - rowid может быть случайным (повторное использование удаленных строк или пропущенных номеров).
...
Рейтинг: 0 / 0
Получить аналог last_insert_rowid для множественной вставки.
    #37639539
vinil_spb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2White Owl

время вставки и так есть, но оно в секундах(и не как иначе). а rowid очень хорошо сортировало то. что приходило за 1сек. и в пределах данного времени( и следовательно небольшого числа записей) не особо важно начнут повторяться они или нет.

Вообщем я нашел метод как это побороть, правда пришлось немного менять структуру программы и забить на вытаскивание вставленных ключей, как это было раньше. Всем спасибо, тему можно считать закрытой, если ответа так и не нашлось, а ушли в сторону проектирования логики.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Получить аналог last_insert_rowid для множественной вставки.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]