SQLite之Autoincrement关键字(自动递增)

sqlite 的 autoincrement 是一个关键字,用于表中的字段值自动递增。我们可以在创建表时在特定的列名称上使用 autoincrement 关键字实现该字段值的自动增加。

注意点:整型字段可以使用关键字autoincrement。

语法

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

create table table_name(
  column1 integer autoincrement,
  column2 datatype,
  column3 datatype,
  .....
  columnn datatype,
);

例子:

考虑company表要创建如下:

sqlite> create table company(
  id integer primary key  autoincrement,
  name      text   not null,
  age      int    not null,
  address    char(50),
  salary     real
);

现在,以下记录插入到表 company:

insert into company (name,age,address,salary)
values ( 'paul', 32, 'california', 20000.00 );
insert into company (name,age,address,salary)
values ('allen', 25, 'texas', 15000.00 );
insert into company (name,age,address,salary)
values ('teddy', 23, 'norway', 20000.00 );
insert into company (name,age,address,salary)
values ( 'mark', 25, 'rich-mond ', 65000.00 );
insert into company (name,age,address,salary)
values ( 'david', 27, 'texas', 85000.00 );
insert into company (name,age,address,salary)
values ( 'kim', 22, 'south-hall', 45000.00 );
insert into company (name,age,address,salary)
values ( 'james', 24, 'houston', 10000.00 );

这将插入到表company 7个元组,company将有以下记录:

id          name        age         address     salary
———-  ———-  ———-  ———-  ———-
1           paul        32          california  20000.0
2           allen       25          texas       15000.0
3           teddy       23          norway      20000.0
4           mark        25          rich-mond   65000.0
5           david       27          texas       85000.0
6           kim         22          south-hall  45000.0
7           james       24          houston     10000.0

个人理解:

1.数据库插入字段:

autoincrement(自增加字段)不能重复使用删除的字段的id值,保证了id必须唯一;
rowid是找已存在的最大rowid+1,有可能rowid+1(当前的rowid)之前被删除过;

2.数据库rowid到达最大之后:

autoincrement(自增加字段)会返回sqlite_full错误码;
rowid新值会在这个最大数之前随机找一个没被使用字段的id值,可能是之前被删除过的字段;

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐