Вы не можете делать то, что хотите, без использования WHERE, поскольку это способ only для выбора строк в таблице для чтения, обновления или удаления. Итак, вы захотите использовать:
UPDATE table SET url = ... WHERE url = '<whatever>'
ОДНАКО ... SqlLite имеет дополнительную функцию - автоматически генерируемый столбец , ROWID . Вы можете использовать этот столбец в запросах. Вы не видите эти данные по умолчанию, поэтому, если вы хотите, чтобы данные были в них, вам нужно явно запросить их, например:
SELECT ROWID, * FROM table
Это означает, что вы можете делать то, что хотите, ссылаясь на этот столбец напрямую:
UPDATE table SET url = ... WHERE ROWID = 1
вам все еще нужно использовать предложение WHERE
, но это позволяет вам получать доступ к строкам в порядке вставки, ничего не делая.
CAVEAT
ROWID эффективно хранит порядок строк INSERT
. Если вы удалите строки из таблицы, ROWID для оставшихся строк изменится NOT - следовательно, в последовательности ROWID могут быть пропуски. Это сделано специально, и нет никакого обходного пути, кроме повторного создания таблицы и повторного заполнения данных.
Портативность
Обратите внимание, что это относится только к SQLite - вы не сможете сделать то же самое с другими механизмами SQL, если вам когда-либо понадобится перенести это. Гораздо лучше добавить колонку с автоматическим номером EXPLICIT (также известную как поле IDENTITY
), которую вы можете использовать и управлять.