ROWID в SQLite устанавливается автоматически?

android cordova ionic-framework sqlite

1250 просмотра

1 ответ

Итак, у меня есть это приложение на Ionic, которое использует плагин SQLite ngCordova для внутреннего хранения. На нем я создаю таблицу с помощью следующей команды:

db.executeSql(
    "CREATE TABLE IF NOT EXISTS Scans_table (" +
      //"id         TEXT PRIMARY KEY  NOT NULL," +
      "name       TEXT              NOT NULL," +
      "comment    TEXT, " +
      "text       TEXT              NOT NULL, " +
      "format     TEXT              NOT NULL, " +
      "dateTaken  TEXT              NOT NULL, " +
      "imgSource  TEXT              NOT NULL)", ... );

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

Проблема в том, что, когда я запрашиваю таблицу с простым, SELECT * ...я вижу все строки, которые я установил, а не ROWID.

Есть ли другой способ установить / проверить ROWID?

Спасибо!

Автор: Sammy I. Источник Размещён: 08.11.2019 10:54

Ответы (1)


4 плюса

Решение

Как показано в документации , ваша таблица имеет иметь внутренний rowidстолбец. Однако, если список столбцов вашей таблицы не содержит псевдоним для этого столбца (т. Е. Столбец INTEGER PRIMARY KEY), rowidстолбец не включается в SELECT *.

Вы можете просто добавить столбец в предложении SELECT:

SELECT rowid, * FROM Scans_table ...

Однако, если вы на самом деле используете rowid, лучше иметь явный столбец INTEGER PRIMARY KEY. Это не только лучше документирует структуру таблицы, но также предотвращает изменение rowidзначений оператором VACUUM .

Автор: CL. Размещён: 20.08.2016 06:25
Вопросы из категории :
32x32