как мы можем получить идентификатор строки, которую мы вставляем через код - PullRequest
0 голосов
/ 21 апреля 2019

Мне нужно получить идентификатор строки, вставленной только сейчас.у меня есть таблица слов и таблица значений.мне нужен wordId слова, которое я вставляю в таблицу для слов, и этот wordId используется для вставки значения в таблицу значений.Кто-нибудь может мне помочь ??

Я думал, что смогу использовать триггер и попробовал триггер:

"СОЗДАТЬ ТРИГГЕР, ЕСЛИ НЕ СУЩЕСТВУЕТ word_insert_trigger ПОСЛЕ ВСТАВКИ НА tb_words НАЧАЛО выбрать NEW.word_id из tb_words; END; "

вот так.я попробовал это в sqlite dbbrowser.но это не сработало.

мне нужен идентификатор строки, когда я вставляю строку следующим образом: «вставить в значения tb_words (word_name) ('test');"

Как мне это сделать, не используя "SELECT last_insert_rowid() "?как в следующей ссылке: Как получить последний автоинкрементный идентификатор из таблицы SQLite?

1 Ответ

2 голосов
/ 21 апреля 2019

Нет необходимости в триггере.Используйте метод SQliteDatabase insert .Он возвращает id (как long ) (точнее, он возвращает rowid и при условии, что столбец word_id был определен какпсевдоним столбца rowid , тогда возвращаемым значением будет значение, присвоенное столбцу word_id.

Псевдоним столбца rowid определяется, если word_id INTEGER PRIMARY KEY закодирован (ключ AUTOINCREMENT может использоваться, НО обычно не должен использоваться).

Вы можете прочитать SQLite AUTOINCREMENT и / или Rowid Tables

Вместо чего-то вроде: -

db.execsql("insert into tb_words(word_name) values('test');");

Вы бы использовали что-то вроде: -

ContentValues cv = new ContentValues();
cv.put("word_name","test");
long word_id = db.insert("tb_words",null,cv);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...