我正尝试在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");
这有可能吗?
我在Windows7的cygwin
下运行sqlite3
。
发布于 2011-10-27 00:49:51
你可以免费得到一个叫ROWID的。无论您是否请求,这都存在于每个SQLite表中。
如果包含整型主键类型列,则该列指向自动ROWID列(是其别名)。
正如您所期望的那样,每当您插入一行时,ROWID (无论您如何称呼它)都会被赋予一个值。如果您在INSERT上显式指定了一个非空值,它将获得指定值,而不是自动递增的值。如果在INSERT上显式赋值为NULL,它将获得下一个自动增量值。
另外,你应该尽量避免:
INSERT INTO people VALUES ("John", "Smith");
并使用
INSERT INTO people (first_name, last_name) VALUES ("John", "Smith");
而不是。第一个版本非常脆弱--如果您在表定义中添加、移动或删除列,INSERT将失败或生成不正确的数据(值在错误的列中)。
发布于 2011-10-27 00:38:07
你读过这个吗?How do I create an AUTOINCREMENT field.
INSERT INTO people
VALUES (NULL, "John", "Smith");
发布于 2017-05-22 19:13:52
SQLite AUTOINCREMENT是用于自动递增表格中某个字段的值的关键字。在创建具有特定列名的表时,我们可以使用AUTOINCREMENT关键字自动递增字段值,以自动递增字段值。
关键字AUTOINCREMENT只能与整数字段一起使用。语法:
AUTOINCREMENT关键字的基本用法如下:
CREATE TABLE table_name(
column1 INTEGER AUTOINCREMENT,
column2 datatype,
column3 datatype,
.....
columnN datatype,
);
示例如下:考虑要创建的公司表,如下所示:
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中:
INSERT INTO TB_COMPANY_INFO (NAME,AGE,ADDRESS,SALARY)
VALUES ( 'MANOJ KUMAR', 40, 'Meerut,UP,INDIA', 200000.00 );
现在选择记录
SELECT *FROM TB_COMPANY_INFO
ID NAME AGE ADDRESS SALARY
1 Manoj Kumar 40 Meerut,UP,INDIA 200000.00
https://stackoverflow.com/questions/7905859
复制相似问题