我需要检索刚刚插入的行的ID。即,我有一个单词表和一个意义表。我需要在表格中插入单词的单词的wordId,并且该wordId用于在含义表中插入含义。谁能帮我吗?
我认为我可以使用触发器并尝试使用触发器:
“如果在不存在word_insert_trigger的情况下创建触发器,则在tb_words上插入后开始从tb_words中选择NEW.word_id;结束;”
像这样。我在sqlite dbbrowser中尝试过。但没有成功。
当我插入这样的行时,我需要行ID:“插入tb_words(word_name)values('test');”
不使用“ SELECT last_insert_rowid()”怎么办?如以下链接所示: How to retrieve the last autoincremented ID from a SQLite table?
答案 0 :(得分:2)
无需触发器。使用SQliteDatabase insert方法。它返回 id (作为 long )(更正确地,它返回 rowid 并假定 word_id 列已被定义为 rowid 列的别名,则返回的值将是分配给word_id列的值。
如果已编码word_id INTEGER PRIMARY KEY
,则定义 rowid 列的别名(通常不应使用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);