Python 我们可以在sqlite3中自动递增字符串吗?

Python 我们可以在sqlite3中自动递增字符串吗?,python,database,sqlite,Python,Database,Sqlite,我们可以在sqlite3中自动增加字符串吗?如果不是,我们怎么做? 例如: RY001 RY002 ... 使用Python,我可以使用printRY+strrowid+1轻松地完成这项工作。但是它的表演怎么样? 谢谢诸位诸如此类: 选择 printfRY%03d,rowid作为id , * 从myTable ?类似这样的内容: 选择 printfRY%03d,rowid作为id , * 从myTable ?如果您的SQLite版本为3.31.0+,则可以生成一个存储或虚拟列: CREATE T

我们可以在sqlite3中自动增加字符串吗?如果不是,我们怎么做? 例如: RY001 RY002 ... 使用Python,我可以使用printRY+strrowid+1轻松地完成这项工作。但是它的表演怎么样? 谢谢诸位

诸如此类:

选择 printfRY%03d,rowid作为id , * 从myTable ?

类似这样的内容:

选择 printfRY%03d,rowid作为id , * 从myTable

如果您的SQLite版本为3.31.0+,则可以生成一个存储或虚拟列:

CREATE TABLE tablename(
   id INTEGER PRIMARY KEY AUTOINCREMENT,
   str_id TEXT GENERATED ALWAYS AS (printf('RY%03d', id)),
   <other columns>
);

它将存储在表中。

如果您的SQLite版本为3.31.0+,则可以生成一个存储或虚拟列:

CREATE TABLE tablename(
   id INTEGER PRIMARY KEY AUTOINCREMENT,
   str_id TEXT GENERATED ALWAYS AS (printf('RY%03d', id)),
   <other columns>
);

它将存储在表中。

前缀是否始终为RY,数字部分是否仅为001到999?它可以增加到999。是的,前缀将始终为RY。前缀是否始终为RY,数字部分是否仅为001到999?它可以增加到999。是,前缀将始终为RY。谢谢,但如果始终存在删除行。如何管理?@Béa如果在id定义中使用AUTOINCREMENT,则删除行时,删除的id将不会在以后插入的列中重复使用。如果你想重复使用丢失的id,你可以省略自动递增。我同意你的观点……但是有没有办法获得最后一个记录id并添加+1。然后把这个加到我的模式里?我可以用python实现,但是sqlite呢?比you@Béa这就是我回答中的表定义所做的。这里:您可以在SQLite中找到更多关于自动增量行为的信息。例如,如果删除最后一个插入的id,例如50,并且希望下一个插入的行具有50而不是51,则不能在INTEGER主键之后使用关键字AUTOINCREMENT。现在我明白了!谢谢你!!谢谢,但如果总是有删除行。如何管理?@Béa如果在id定义中使用AUTOINCREMENT,则删除行时,删除的id将不会在以后插入的列中重复使用。如果你想重复使用丢失的id,你可以省略自动递增。我同意你的观点……但是有没有办法获得最后一个记录id并添加+1。然后把这个加到我的模式里?我可以用python实现,但是sqlite呢?比you@Béa这就是我回答中的表定义所做的。这里:您可以在SQLite中找到更多关于自动增量行为的信息。例如,如果删除最后一个插入的id,例如50,并且希望下一个插入的行具有50而不是51,则不能在INTEGER主键之后使用关键字AUTOINCREMENT。现在我明白了!谢谢你!!谢谢,但我对id有意见谢谢,但我对id有意见