Я пытаюсь обновить значения в строке таблицы и дать этой строке следующий последовательный идентификатор (я не тот, кто решил это, но факт: когда я меняю заголовок, мне нужен новый идентификатор).
Например:
Id | Title
------------
2 | Wonderwall
3 | Lonely Doy
4 | All That She Wants
Должно стать
Id | Title
------------
2 | Wonderwall
4 | All That She Wants
5 | Lonely Day
Я попытался обновить заголовок, оставив идентификатор прежним. Этот запрос работает безупречно:
result = await database_helper.dbRunQuery(`
UPDATE Songs
SET Title=?,
LastModified=?
WHERE Id=?`, [
newValue,
new Date(),
id
]);
Когда я, однако, пытаюсь установить идентификатор одновременно, строка просто удаляется без каких-либо сообщений об ошибках (очевидно, SQLite не выдает их в операторах UPDATE). Это код, который не работает:
result = await database_helper.dbRunQuery(`
UPDATE Songs
SET Title=?,
LastModified=?,
Id=?
WHERE Id=?`, [
newValue,
new Date(),
database_helper.getNextSongID(),
id
]);
Есть ли причина, почему он работает таким образом? А также, поскольку мне нужно обновить больше таблиц, как это: Есть ли более простой способ автоматического увеличения столбца Id (нет, автоматическое увеличение не определено для этой таблицы, и я не могу это изменить)? У меня уже есть запрос
SELECT Id
FROM Songs
ORDER BY Id DESC
LIMIT 1
для выбора самого высокого идентификатора в таблице, я должен просто иметь возможность поместить это в подзапрос, как Update Songs Set ..., Id=(SELECT Id ... LIMIT 1) WHERE ...
верно? Мой SQL стал довольно ржавым, я должен признать ...