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。我说得对吗?