在sqlite中有自动增量吗?
发布时间:2020-12-12 19:19:06 所属栏目:百科 来源:网络整理
导读:我试图在Sqlite3中创建一个自动递增主键的表。我不知道这是否真的可能,但我希望只需指定其他领域。例如: CREATE TABLE people (id integer primary key auto increment,first_name varchar(20),last_name varchar(20)); 然后,当我添加一个值,我希望只需
我试图在Sqlite3中创建一个自动递增主键的表。我不知道这是否真的可能,但我希望只需指定其他领域。例如:
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下运行sqlite3在cygwin下。 你得到一个免费的,称为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将失败或生成不正确的数据(值在错误的列中)。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |