SQLite:主键和sqlitedatabase.insert

时间:2019-01-11 16:10:22

标签: sqlite insert primary-key rowid

我有一个带有INTEGER PRIMARY KEY的表。这意味着,我的主键成为了rowid的别名。但是rowid很长(根据SQLiteDatabase.insert的返回值),而我的主键是整数。那么,如果我在该表中使用所有可能的整数值的时间插入数据,会发生什么情况?因为我的主键是整数,所以我会期望一个错误。但是由于我的主键refers to / is an alias for的rowid(这是一个很长的->仍然可用的数字),SQLiteDatabase.insert可以继续插入我的数据,返回rowid ...对吗?还是SQLiteDatabase.insert限制自己为整数值范围,但每次仍然返回很长?如果是这样,立即将SQLiteDatabase.insert的返回值转换为int是没有道理的吗?因为无论如何我都无法从该方法获得“长值”(由于我的主键整数)...还是可以?

1 个答案:

答案 0 :(得分:1)

来自:https://www.sqlite.org/datatype3.html

  

INTEGER。该值是一个有符号整数,存储在1、2、3、4、6或8中   字节取决于值的大小

正如您在 SQLite 中看到的那样,INTEGER数据类型不是Java中int的数据类型,
但它最多可以存储 8个字节的值,就像Java long类型一样。