依赖于rowid而不是_id主键(SQLite)的优点/缺点

时间:2017-01-30 03:48:14

标签: android sqlite android-sqlite

我有一个映射表,它基本上将一个表的主键映射到另一个表的主键(加上一些其他列)。这两个列上都有索引引用主键。

我想知道我是否需要映射表的_id主键。在查询中,我可以简单地引用rowid而不是_id。 FWIW,数据库在创建后不会被修改。

创建_id列有什么好处?

2 个答案:

答案 0 :(得分:1)

如果_id是主键且是整数类型,则它将成为 rowid 的别名。

所以没有多大区别。

虽然在插入中包含rowid可能不方便:INSERT INTO test1(rowid, a, b) VALUES(123, 5, 'hello'); (From sqlite.org)

答案 1 :(得分:1)

Android框架的许多部分都希望您的查询返回一个名为_id的唯一整数列。

如果映射表的内容从未显示在这样的Android组件中(例如,在列表视图中查找两个名称并显示name1 / name2映射),那么您就不需要它了。

但是,(almost)所有表都有内部rowid,因此明确将其声明为_id并不会有什么坏处,特别是如果您不知道是否需要它

引用它rowid并不总是一个好主意,因为没有明确的专栏its value might change

相关问题