(点击上方公众号,可快速关注)

SQLite数据库中的表均有一个特殊的rowid字段,它是一个不重复的64位有符号整数,默认起始值为1。rowid别名为oid或_rowid_,但在创建表的SQL声明语句中只能使用rowid作为关键字。如果在创建表的时候设置了类型为integer的具有自动增长性的主键,那么这时的主键相当于是rowid的别名。

rowid只能是单调递增的,它由SQLite内部维护,不能自己指定。对于失败的插入操作,rowid也可能在原来的基础上执行了自增。删除或回滚操作并不会减小rowid的值。当rowid达到所能表示的最大值时,这时如果有新纪录要插入,系统就会从之前没有被使用过的(或从已经被删除的记录的)rowid中随机取出一个作为rowid。若没有可用的rowid,系统就会抛出SQLITE_FULL的错误。

rowid字段在表中默认是隐藏的,也就是说,除非SQL查询语句中指定返回rowid,否则查询结果不会包含有rowid字段。

可以在创建表时使用WITHOUT ROWID以声明不生成rowid字段,例如:

CREATE TABLE IF NOT EXISTS wordcount(

word TEXT PRIMARY KEY,

cnt INTEGER

) WITHOUT ROWID;

将关键字AUTOINCREMENT使用在声明为WITHOUT ROWID的表不但不起作用,还将引发一个错误。

SQLiteAPI 函数sqlite3_last_insert_rowid()可以取得最后一条插入的记录的rowid。但sqlite3_last_insert_rowid()是基于当前进程的。也就是说,sqlite3_last_insert_rowid()取到的是当前进程最后一次插入记录的rowid。对于不是当前进程插入的记录,sqlite3_last_insert_rowi()均返回0。sqlite3_last_insert_rowi()对应的SQL声明为last_insert_rowid(),例如:select last_insert_rowid() from exam_tbl

看完本文有收获?请转发分享更多人

因为分享是一种美德

sqlite插入时间字段_sqlite 获取最后插入id相关推荐

  1. 向mysql中插入时间_Java向mysql中插入时间的方法

    ava向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明);部分资料参考网络资源 java向MySQL插入当前时间的四种方式 第一种:将java.util.Date类型的时 ...

  2. mysql插入时间字段为空值_php – 如何在mysql日期类型字段中插入一个空值?

    如何在 mysql日期类型字段(NULL = yes)中插入NULL或空值. 如果我尝试插入一个空值,它会插入0000-00-00,但是我想保持为空或为空. 感谢帮助. UPDATE 请看我已经将默认 ...

  3. mysql数据库怎么插入时间_给mysql数据库插入当前时间

    mysql相关的三个函数有: NOW()函数以`'YYYY-MM-DD HH:MM:SS'返回当前的日期时间,可以直接存到DATETIME字段中. CURDATE()以'YYYY-MM-DD'的格式返 ...

  4. Mysql设置创建时间字段和更新时间字段自动获取时间,填充时间

    1.引言 在实际开发中,每条数据的创建时间和修改时间,尽量不需要应用程序去记录,而由数据库获取当前时间自动记录创建时间,获取当前时间自动记录修改时间. 2.创建语句 (1)–添加CreateTime ...

  5. php mssql 新 id,MSSQL获取当前插入数据的id

    例如我们新建了一张表T_User,字段如下u_id,主键,为标示符,user_name...... 然后我们来执行一个新增插入操作: insert into T_User(user_name,user ...

  6. Oracle 插入时间时 ,报错:ORA-01861: 文字与格式字符串不匹配

    这个错误一般出现在时间字段上,即插入的时间格式和数据库现有的时间格式不一致,如:直接使用to_date('2007-12-28 10:07:24'),没有指定日期格式,会报错 . 解决的方法是格式化插 ...

  7. shell脚本获取mysql插入数据自增长id的值

    shell脚本获取mysql插入数据自增长id的值 在shell脚本中我们可以通过last_insert_id()获取id值,但是,需要注意的是,该函数必须在执行插入操作的sql语句之后,立即调用,否 ...

  8. LeetCode 381. O(1) 时间插入、删除和获取随机元素 - 允许重复(vector + 哈希)

    文章目录 1. 题目 2. 解题 1. 题目 设计一个支持在平均 时间复杂度 O(1) 下, 执行以下操作的数据结构. 注意: 允许出现重复元素. insert(val):向集合中插入元素 val. ...

  9. 常数时间插入、删除和获取随机元素

    常数时间插入.删除和获取随机元素 设计一个支持在平均时间复杂度O(1)下,执行以下操作的数据结构. insert(val): 当元素val不存在时,向集合中插入该项. remove(val): 元素v ...

最新文章

  1. python安装gdal包_python安装gdal的两种方法
  2. 【转】一台台式机电脑 是集成显卡,我现在想搞两个显示器,一台显示器看监控,一台显示器自己...
  3. ARM 嵌入式入门经验
  4. 2021-04-21--中标麒麟--yum源修改
  5. 开始→运行→输入的命令集锦 1
  6. DCMTK:演示状态查看器-网络接收组件(存储SCP)
  7. native的Socket向Android的LocalSocketServer发送汉字乱码的问题
  8. 数据库 创建 / 查看/ 删除
  9. 康乐php一键脚本,kangle一键脚本
  10. html 圆饼画布,html5 canvas画饼
  11. 《剑指offer》面试题21——包含min函数的栈(C++)
  12. 拓端tecdat|matlab使用Copula仿真优化市场风险数据VaR分析
  13. MVC4 Model ValueProvider
  14. 用matlab实现sift算法,sift算法的MATLAB程序
  15. matlab中怎么输入参数,matlab中输入参数命令
  16. 自定义异常 extends Exception
  17. STM32工程文件结构详解
  18. 深入理解先验分布、后验分布、似然估计
  19. swift 设置 pickerView 为黑底白字
  20. FileStream与StreamWriter区别

热门文章

  1. Java Process getOutputStream()方法与示例
  2. SpringBoot时间格式化的5种方法!
  3. 一文带你看完ZooKeeper!
  4. 富编译器汇总及二次开发Demo
  5. jsp中redirect和forward的区别
  6. pandas无法打开.xlsx文件,xlrd.biffh.XLRDError: Excel xlsx file; not supported
  7. 微信公众号——永久素材的上传
  8. 对HashMap数据结构的理解——加载因子和初始容量
  9. Scala中=gt;的用法
  10. 连接linux工具Mtr,Linux常用网络工具:路由扫描之mtr