【问题标题】:Huge (20 digits) Primary keys and SQLite巨大的(20 位)主键和 SQLite
【发布时间】:2008-10-14 20:43:11
【问题描述】:

如果我尝试将具有 20 位主键的数据插入 SQLite 数据库,第二个插入语句会出错,因为它“不是唯一的”。 如果我选择可以从 SQLite 命令提示中看到的值,则主键是以科学计数法编写的。 列类型为十进制。有没有办法强制 SQLite “按原样”插入值,即使值那么长,也能保持精度/“正常表示”?

【问题讨论】:

    标签: database sqlite primary-key


    【解决方案1】:

    将其插入为“字符串”,而不是数字。

    【讨论】:

    • 好吧,我必须将列定义为 TEXT 并插入引用的值。我认为这是因为 SQLite 的类型亲和性
    • 史蒂夫,这冷了。我必须记住那个。
    【解决方案2】:

    主键字段必须是整数,最大值为9223372036854775807。使用单独的(索引)字段,并将值作为字符串插入。

    【讨论】:

    • SQLite 中不要求主键是整数。 rowid 是一个 64 位整数,但这完全是另一回事。主键可以是您喜欢的任何数据类型。详情见这里:sqlite.org/autoinc.html
    【解决方案3】:

    奇怪,听起来您的包装器将数字作为浮点数放入。我认为 DECIMAL 在内部映射到整数。使用字符串会起作用,但对字符串而不是 int 的索引可能会很慢。

    【讨论】:

    • DECIMAL 具有数字亲和性。这意味着可以存储任何数据类型,但如果可能,字符串将转换为 INTEGER 或 REAL。 OP 可能声明了一个 INTEGER PRIMARY KEY 列,确实需要一个 64 位有符号整数。
    猜你喜欢
    • 2013-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    • 2021-07-11
    • 2013-04-18
    相关资源
    最近更新 更多