首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在sqlite中有自动递增吗?

在sqlite中有自动递增吗?
EN

Stack Overflow用户
提问于 2011-10-27 00:36:21
回答 5查看 174.8K关注 0票数 132

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

例如:

代码语言:javascript
复制
CREATE TABLE people (id integer primary key auto increment, first_name varchar(20), last_name varchar(20));

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

代码语言:javascript
复制
INSERT INTO people
VALUES ("John", "Smith");

这有可能吗?

我在Windows7的cygwin下运行sqlite3

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-10-27 00:49:51

你可以免费得到一个叫ROWID的。无论您是否请求,这都存在于每个SQLite表中。

如果包含整型主键类型列,则该列指向自动ROWID列(是其别名)。

正如您所期望的那样,每当您插入一行时,ROWID (无论您如何称呼它)都会被赋予一个值。如果您在INSERT上显式指定了一个非空值,它将获得指定值,而不是自动递增的值。如果在INSERT上显式赋值为NULL,它将获得下一个自动增量值。

另外,你应该尽量避免:

代码语言:javascript
复制
 INSERT INTO people VALUES ("John", "Smith");

并使用

代码语言:javascript
复制
 INSERT INTO people (first_name, last_name) VALUES ("John", "Smith");

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

票数 194
EN

Stack Overflow用户

发布于 2011-10-27 00:38:07

你读过这个吗?How do I create an AUTOINCREMENT field.

代码语言:javascript
复制
INSERT INTO people
VALUES (NULL, "John", "Smith");
票数 10
EN

Stack Overflow用户

发布于 2017-05-22 19:13:52

SQLite AUTOINCREMENT是用于自动递增表格中某个字段的值的关键字。在创建具有特定列名的表时,我们可以使用AUTOINCREMENT关键字自动递增字段值,以自动递增字段值。

关键字AUTOINCREMENT只能与整数字段一起使用。语法:

AUTOINCREMENT关键字的基本用法如下:

代码语言:javascript
复制
CREATE TABLE table_name(
   column1 INTEGER AUTOINCREMENT,
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype,
);

示例如下:考虑要创建的公司表,如下所示:

代码语言:javascript
复制
sqlite> CREATE TABLE TB_COMPANY_INFO(
   ID INTEGER PRIMARY KEY   AUTOINCREMENT,
   NAME           TEXT      NOT NULL,
   AGE            INT       NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

现在,将以下记录插入到表TB_COMPANY_INFO中:

代码语言:javascript
复制
INSERT INTO TB_COMPANY_INFO (NAME,AGE,ADDRESS,SALARY)
VALUES ( 'MANOJ KUMAR', 40, 'Meerut,UP,INDIA', 200000.00 );

现在选择记录

代码语言:javascript
复制
SELECT *FROM TB_COMPANY_INFO
ID      NAME            AGE     ADDRESS             SALARY
1       Manoj Kumar     40      Meerut,UP,INDIA     200000.00
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7905859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档