我有一个映射表,它基本上将一个表的主键映射到另一个表的主键(加上一些其他列)。这两个列上都有索引引用主键。
我想知道我是否需要映射表的_id主键。在查询中,我可以简单地引用rowid而不是_id。 FWIW,数据库在创建后不会被修改。
创建_id列有什么好处?
答案 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。