SQLite数据库中rowid使用
SQLite中每个表都默认包含一个隐藏列rowid,使用WITHOUT ROWID定义的表除外。通常情况下,rowid可以唯一的标记表中的每个记录。表中插入的第一个条记录的rowid为1,后续插入的记录的rowid依次递增1。即使插入失败,rowid也会被加一。所以,整个表中的rowid并不一定连续,即使用户没有删除过记录。
由于唯一性,所以rowid在很多场合中当作主键使用。在使用的时候,select * from tablename 并不能获取rowid,必须显式的指定。例如,select rowid, * from tablename 才可以获取rowid列。查询rowid的效率非常高,所以直接使用rowid作为查询条件是一个优化查询的好方法。
但是rowid列作为主键,在极端情况下存在隐患。由于rowid值会一直递增,如果达到所允许的最大值9223372036854775807后,它会自动搜索没有被使用的值,重新使用,并不会提示用户。这时,使用rowid排序记录,会产生乱序,并引入其他的逻辑问题。所以,如果用户的数据库存在这种可能的情况,就应该使用AUTOINCREMENT定义主键,从而避免这种问题。使用AUTOINCREMENT设置自增主键,虽然也会遇到9223372036854775807问题,但是它会报错,提示用户,避免产生rowid所引发的问题。

SQLite数据库中rowid使用相关推荐

  1. SQLite数据库中rowid的使用

    SQLite数据库中rowid使用 SQLite中每个表都默认包含一个隐藏列rowid,使用WITHOUT ROWID定义的表除外.通常情况下,rowid可以唯一的标记表中的每个记录.表中插入的第一个 ...

  2. 是否可以在SQLite数据库中一次插入多行?

    在MySQL中,您可以插入多行,如下所示: INSERT INTO 'tablename' ('column1', 'column2') VALUES('data1', 'data2'),('data ...

  3. Sql Server数据库数据导入到SQLite数据库中

    背景:Sql Serve数据库中有个表格A,想把数据导入到SQLite数据库中 工具下载地址:点击打开链接 用法: 原作者地址及下载地址:点击打开链接

  4. android sqlite更改数据,更新现有的sqlite数据库中的列,但没有任何更改android

    对不起,但我没有在网上找到任何东西.我在我的目录"资产"中使用现有的数据库.当我想更新一列时,函数返回该列已经改变,但实际上并没有发生.我试着用execSQL,但没有再次.更新现有 ...

  5. qt mysql 系统时间_使用QT和参数在SQLite数据库中插入日期时间

    我想从C++/QT应用程序执行插入到SQLite数据库. 我想要插入数据的表格中的一列是datetime(yyyy-mm-dd hh:mm:ss).使用QT和参数在SQLite数据库中插入日期时间 我 ...

  6. sqlite数据库中的sql语句大全-zhuan

    转载自http://hunankeda110.iteye.com/blog/1143258 2010年SQLite学习笔记之一 一. 如何获取SQLite最新版本 官方站点:http://www.sq ...

  7. c语言sqlite3写数据类型,在sqlite数据库中,int类型不等于integer数据类型

    在sqlite数据库中,int类型不等于integer数据类型 这些天一直在忙销售管理软件易卖通客户端的程序编写,由于需要采用本地数据缓存机制来提高程序的数据访问效率,所以需要在客户端使用一个小巧的本 ...

  8. Android studio根据文本提取出的关键词在sqlite数据库中查找相关内容

    Android studio根据文本提取出的关键词在sqlite数据库中查找相关内容 一.介绍 二.Android studio连接.操作和查看sqlite数据库 三.在数据库中查找相关内容 四.运行 ...

  9. python金融数据分析和可视化--02_04将股票数据存到sqlite数据库中

    02_04将股票数据存到sqlite数据库中 1. 建立连接 通过SQLAlchemy中的create_engine()函数连接数据库 from sqlalchemy import create_en ...

最新文章

  1. laravel 中间件不生效_laravel中间件实战(luke)
  2. **php队列的实现思路和详细过程
  3. 2019.04.07 装饰器介绍
  4. Anaconda conda常用命令
  5. 【Java中级篇】使用zxing生成二维码
  6. mysql 横向扩展 中间件_mysql-proxy数据库中间件架构 | 架构师之路
  7. c语言sizeof(test),解析C语言中的sizeof
  8. jmeter安装和使用-个人总结
  9. 《转》解决struts2在(IE,Firefox)下载文件名乱码问题。
  10. drf之day09:内置的认证类,权限类,频率类,django配置文件解析,过滤类的其他作用,全局异常处理,接口文档
  11. leetcode回溯算法
  12. [推荐]“痘痘”与所对应的疾病
  13. Google Earth Engine(GEE)——S2影像异常值
  14. 没有配置java环境变量,为什么我java环境变量都还没有配置都可以运行java程序了...
  15. OSChina 周六乱弹 ——对,假期的最后一天咯~!
  16. android x86引导修复,Android-x86 9.0-r2 发布,更新内核与UEFI引导修复
  17. java相关面试总结
  18. 转:行人检测(Pedestrian Detection)资源
  19. 工欲善其事必先利其器——开发神器(IDEA)
  20. caffe 画损失曲线和准确率曲线

热门文章

  1. 各种深度学习框架实现猫狗大战
  2. OSI模型介绍维基百科
  3. gcc 版本升级详细记录
  4. 【学习笔记】Keras库下的resnet源码分析
  5. Macos 安装Clang和LLVM过程记录
  6. KPI指标的计算公式汇总
  7. mysql主从 复制新库_关于MySQL主从复制的几种复制方式总结
  8. 亿级月活沙盒平台《迷你世界》背后的黑科技
  9. Matlab 没有 randint,Matlab_learning_4(rand randn randint函数 )
  10. 绘画教程:如何画出挂住的衣服褶皱?