SQLite:删除一个rowid后如何插入新的rowid?

SQLite:删除一个rowid后如何插入新的rowid?,sqlite,Sqlite,假设我的桌子是 CREATE TABLE bookmark ( Id INTEGER PRIMARY KEY AUTOINCREMENT, Name STRING(64) ); 我在此表中插入了三行,如下所示: Id | Name 1 | Bookmark 1 2 | Bookmark 2 3 | Bookmark 3 现在如果我删除第3行,那么我得到: Id | Name 1 | Bookmark 1 2 | Bookmark 2 Id | N

假设我的桌子是

CREATE TABLE bookmark (
    Id INTEGER PRIMARY KEY AUTOINCREMENT,
    Name STRING(64) 
);
我在此表中插入了三行,如下所示:

Id   | Name
1    | Bookmark 1
2    | Bookmark 2
3    | Bookmark 3
现在如果我删除第3行,那么我得到:

Id | Name
1  | Bookmark 1
2  | Bookmark 2
Id | Name
1  | Bookmark 1
2  | Bookmark 2
3  | Bookmark 4
现在,我插入一个名为Bookmark 4的新行,我得到如下结果:

Id | Name
1  | Bookmark 1
2  | Bookmark 2
Id | Name
1  | Bookmark 1
2  | Bookmark 2
3  | Bookmark 4
难道我不应该期待以下吗

Id | Name
1  | Bookmark 1
2  | Bookmark 2
4  | Bookmark 4
有人知道怎么做吗



注意:这不是SQLite行为,而是SQLAlchemy问题。正如@CL.所指出的,它真的做到了我想要的。

抱歉,各位,最后我发现它是由SQLAlchemy 1.1.13造成的,它没有为SQLite设置
自动增量
字段,即使我们指定了如下内容

db = SQLAlchemy()
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
当我使用烧瓶时,如果指定

app.config['SQLALCHEMY_ECHO'] = True
日志显示实际上没有设置
AUTOINCREMENT

在一些挖掘之后,为了对SQLite执行此操作,在SQLAlchemy 1.1.13()中

对于SQLAlchemy 1.2,以下各项可能有效(未经测试)


@CL.这是SQLAlchemy的问题,不是SQLite的错。对不起!SQLite有。那么为什么SQLAlchemy没有为SQLite设置自动增量呢;它使用另一种。是的,我的意思是在SQL查询中不明确地强制执行
自动递增
字段,但它会自动递增,因为默认情况下,主键整数列在SQLite中被视为自动递增,只需重用不在当前表中的ID,而忽略已删除的ID。我说得对吗?