对于使用 python 的 sqlite3 中的主键自动增量列,是否可以选择第一个值?
is choosing first value possible, for the primary key autoincrement column in sqlite3 using python?
我写了一个 python3 scrypt,使用 sqlite3 创建了一个 table 并设置了一个主键自动增量,并且它有效。但我需要从不同的数字开始自动递增(默认当然是'1')。 (例如第一行'2011',第二行'2012',第三行'2013',exc .....)可能吗?
谢谢
你为什么要这么做?自动增量的目的是创建行标识符,每行的唯一值是什么。根据 documentation:
AUTOINCREMENT 关键字强加了额外的 CPU、内存、磁盘 space 和磁盘 I/O 开销,如果不严格,应避免 需要。通常不需要。
如果您希望 table 自动增量从 2011 年开始,您应该绝对避免使用 AUTOINCREMENT 列。
但我有另一个解决方案:
您应该创建 table 没有 自动增量列。
CREATE TABLE my_table (
col1 TEXT
,col2 INT
)
然后你创建一个VIEW:
CREATE VIEW v_my_table
AS
SELECT
ROWID + 2010 as ID
,col1
,col2
FROM
my_table
要访问 table 数据,您将使用视图而不是 table。
SELECT * FROM v_my_table
此 VIEW 将包含您从 2011 年开始的自动增量列。
我写了一个 python3 scrypt,使用 sqlite3 创建了一个 table 并设置了一个主键自动增量,并且它有效。但我需要从不同的数字开始自动递增(默认当然是'1')。 (例如第一行'2011',第二行'2012',第三行'2013',exc .....)可能吗? 谢谢
你为什么要这么做?自动增量的目的是创建行标识符,每行的唯一值是什么。根据 documentation:
AUTOINCREMENT 关键字强加了额外的 CPU、内存、磁盘 space 和磁盘 I/O 开销,如果不严格,应避免 需要。通常不需要。
如果您希望 table 自动增量从 2011 年开始,您应该绝对避免使用 AUTOINCREMENT 列。
但我有另一个解决方案:
您应该创建 table 没有 自动增量列。
CREATE TABLE my_table (
col1 TEXT
,col2 INT
)
然后你创建一个VIEW:
CREATE VIEW v_my_table
AS
SELECT
ROWID + 2010 as ID
,col1
,col2
FROM
my_table
要访问 table 数据,您将使用视图而不是 table。
SELECT * FROM v_my_table
此 VIEW 将包含您从 2011 年开始的自动增量列。