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

作者:mrr 时间:2024-01-13 20:16:29 

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值,可能是之前被删除过的字段;

标签:sqlite,Autoincrement,自动递增
0
投稿

猜你喜欢

  • Python 合并多个TXT文件并统计词频的实现

    2023-01-09 12:16:08
  • Python按照list dict key进行排序过程解析

    2023-12-06 08:19:06
  • fso对象CreateTextFile方法调用时“无效的过程调用或参数”错误

    2009-05-26 15:39:00
  • Oracle 插入超4000字节的CLOB字段的处理方法

    2009-07-12 18:52:00
  • SQL Server 分页查询存储过程代码

    2024-01-21 04:53:40
  • 在Windows系统上安装Cygwin搭建Swoole测试环境的图文教程

    2022-11-13 21:19:34
  • python3 使用ssh隧道连接mysql的操作

    2023-09-01 19:15:11
  • 浅析javascript中函数声明和函数表达式的区别

    2024-05-09 10:33:14
  • 微信小程序仿今日头条导航栏滚动解析

    2024-04-29 13:55:42
  • TensorFlow Autodiff自动微分详解

    2021-06-02 10:33:02
  • Python嵌套循环的使用

    2022-11-12 17:19:23
  • MySQL查询重写插件的使用

    2024-01-27 15:55:58
  • Python使用Tkinter实现滚动抽奖器效果

    2023-04-07 03:05:45
  • Python基础知识+结构+数据类型

    2021-03-11 12:55:33
  • Vue使用vux-ui自定义表单验证遇到的问题及解决方法

    2024-05-10 14:18:07
  • Bootstrap Table的使用总结

    2024-03-14 01:53:06
  • oracle 查询表名以及表的列名

    2009-07-26 09:33:00
  • 基于Python实现虚假评论检测可视化系统

    2022-10-02 12:50:03
  • python sqlalchemy动态修改tablename两种实现方式

    2023-12-05 06:43:15
  • Python lambda表达式filter、map、reduce函数用法解析

    2022-03-30 03:52:31
  • asp之家 网络编程 m.aspxhome.com