gpt4 book ai didi

sql - SQLite 中有 AUTO INCREMENT 吗?

转载 作者:IT王子 更新时间:2023-10-29 06:16:49 32 4
gpt4 key购买 nike

我正在尝试在 Sqlite3 中创建一个带有自动递增 primary key 的表.我不确定这是否真的可行,但我希望只需指定其他字段即可。

例如:

CREATE TABLE people (id integer primary key auto increment, first_name varchar(20), last_name varchar(20));

然后,当我添加一个值时,我希望只需要做:

INSERT INTO people
VALUES ("John", "Smith");

这可能吗?

我在 Windows 7 的 cygwin 下运行 sqlite3

最佳答案

您可以免费获得一个,称为 ROWID。无论您是否要求,它都存在于每个 SQLite 表中。

如果您包括一个 INTEGER PRIMARY KEY 类型的列,该列指向(是一个别名)自动 ROWID 列。

只要您插入一行,ROWID(不管您怎么调用它)都会被分配一个值,正如您所期望的那样。如果您在 INSERT 上显式分配一个非 NULL 值,它将获得指定的值而不是自动递增。如果您在 INSERT 上显式分配 NULL 值,它将获得下一个自动增量值。

另外,你应该尽量避免:

 INSERT INTO people VALUES ("John", "Smith");

并使用

 INSERT INTO people (first_name, last_name) VALUES ("John", "Smith");

相反。第一个版本非常脆弱——如果您在表定义中添加、移动或删除列,INSERT 将失败或产生不正确的数据(值在错误的列中)。

关于sql - SQLite 中有 AUTO INCREMENT 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7905859/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com