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值,可能是之前被删除过的字段;
上一篇: python对数组进行反转的方法