Мне нужно получить идентификатор строки, вставленной только сейчас. у меня есть таблица слов и таблица значений. мне нужен wordId слова, которое я вставляю в таблицу для слов, и этот wordId используется для вставки значения в таблицу значений. Может кто-нибудь мне помочь??
Я думал, что могу использовать триггер и попробовал триггер:
"СОЗДАЙТЕ ТРИГГЕРА, ЕСЛИ НЕ СУЩЕСТВУЕТ word_insert_trigger ПОСЛЕ ВСТАВКИ НА tb_words НАЧАЛО выбрать NEW.word_id из tb_words; END;"
как это. я попробовал это в sqlite dbbrowser. но это не сработало.
мне нужен идентификатор строки, когда я вставляю строку следующим образом: "вставить в значения tb_words (word_name) ('test');"
Как я могу это сделать?
Нет необходимости в триггере. Используйте метод вставки SQliteDatabase. Он возвращает идентификатор (как 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);
sqlite3_last_insert_rowid()
?