【问题标题】:SQL - Retrieving auto-increment value after inserting a custom valueSQL - 插入自定义值后检索自动增量值
【发布时间】:2016-08-09 13:40:38
【问题描述】:

假设我需要跟踪学生的 s.no。它们被分配一个基于自动增量的 s.no。第 1 人得到 1,第 2 人得到 2,依此类推。但是,如果一个学生想要一个自定义的 s.no(比如 32),我需要分配给他 32,当下一个人来时,我需要分配给他 3 和下一个人 4,依此类推。在分配自定义序列号之前,我将检查数据库以确保它们不存在。我正在使用 sqlite3。我有一个 1 列的 db 表(自动增量 pk)

数据库:-

S.no
    1
    2
    3

现在我插入一个自定义值“32”

custom = 32
    con.execute("INSERT INTO table (id) values (?)", (custom)

数据库:

S.no
    1
    2
    3
    32

现在,当我使用自动增量来增加值时,数据库变为:

S.no
    1
    2
    3
    32
    33
    34

我想要它是什么:

S.no
    1
    2
    3
    32
    4
    5

【问题讨论】:

    标签: database sqlite


    【解决方案1】:

    SQLite's autoincrement algorithm 不是这样工作的。

    要获得小于实际使用的最大 ID 的自动递增 ID,您必须自己实现算法(即将当前计数器值存储在其他地方)。

    【讨论】:

    • 如果有多个用户/进程插入行(和 ID),也可能需要事务。
    • 所以我必须存储一个变量说“k”并且每次我存储时 k+=1 它并且在添加自定义 s.no 时忽略它。会解决的。谢谢!
    猜你喜欢
    • 2017-09-24
    • 2018-12-19
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    • 2016-11-06
    • 2010-10-11
    • 2014-10-08
    • 1970-01-01
    相关资源
    最近更新 更多