Получить несколько строк в SQLite для вставки или обновления, используя JavaScript
Я знаю SQLite есть last_insert_rowid()
функция. Я хотел бы создать аналогичную функцию, но я хочу получить массив индексов, каждый из которых будет вставлен или обновлен в моей БД. Чтобы быть более понятным, у меня есть заполненная таблица, как это (имя УНИКАЛЬНО):
rowid name age
1 'John' 18
2 'Anne' 25
3 'Jack' 32
Затем я должен вставить или обновить несколько строк:('John',19), ('Michael',33), ('Jenny',12)
Результат будет:
rowid name age
1 'John' 19
2 'Anne' 25
3 'Jack' 32
4 'Michael' 33
5 'Jenny' 12
И добавлены / обновлены rowids: 1,4,5
Как я могу получить эти индексы? Ответ JS был бы хорош, во всяком случае, даже на других языках, я полагаю, я должен понимать.
1 ответ
Решение
Я решил использовать два триггера. Логический поток:
- Создать временную таблицу, temp_table, клон основной таблицы;
- Создайте триггер вставки, tr_insert. Этот триггер проверяет вставку в основную таблицу и копирует новую строку также в temp_table;
- Создайте триггер обновления tr_update, который действует так же, как в пункте 2, но для обновлений;
- После всех вставок / обновлений вызовите функцию, которая анализирует temp_table, в который вставляются / обновляются строки.
- Не забудьте вызвать delete из temp_table после его использования