SQLite数据库中rowid使用

SQLite中每个表都默认包含一个隐藏列rowid,使用WITHOUT ROWID定义的表除外。通常情况下,rowid可以唯一的标记表中的每个记录。表中插入的第一个条记录的rowid为1,后续插入的记录的rowid依次递增1。即使插入失败,rowid也会被加一。所以,整个表中的rowid并不一定连续,即使用户没有删除过记录。

由于唯一性,所以rowid在很多场合中当作主键使用。在使用的时候,select * from tablename 并不能获取rowid,必须显式的指定。例如,select rowid as myrowid, * 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. Delphi多媒体设计之TMediaPlayer组件(二)
  2. JavaScript大杂烩17 - 性能优化
  3. ADO.NET与抽水的故事 系列三——抽水机—Command
  4. POJ-2226 Muddy Fields 最小点集覆盖
  5. dataframe两个表合并_使用Pandas关联Excel表操作示例
  6. 【目标定位】基于matlab循环增益卡尔曼滤波目标定位仿真【含Matlab源码 145期】
  7. 解决requests.text乱码问题content.decode()
  8. 装箱问题 vijos
  9. OV7725摄像头模块SCCB通信
  10. 微信小程序 ui框架(辅助)
  11. unity 安装踩坑
  12. Node.js十年,你大爷还是你大爷
  13. [新星计划] Python环境搭建 | 万丈高楼平地起
  14. pacman / yaourt 命令
  15. 表单环境外访问Xrm.Page.context对象
  16. 测试 CS4344 立体声DA转换器
  17. js笔试面试题(随意)
  18. Django个人博客搭建4-配置使用 Bootstrap 4 改写模板文件
  19. Creo教程:如何使用SQLite在Creo中创建日记应用?
  20. 安装软件提示无效驱动器D

热门文章

  1. c51语言定义布尔变量,51单片机指令系统:布尔变量操作指令(9)
  2. 数据表格(table)
  3. 易视腾iS-E5-NGH_3798MV100_MT7601_卡刷固件包_当贝纯净桌面
  4. 云逗猫——直播弹幕控制机械臂逗猫棒
  5. Web日志安全分析技巧
  6. Android新闻阅读器(数据抓取)
  7. switch-case和if-else的效率比较·必看
  8. 理解计算机系统第八章(家庭作业)
  9. smbclient和mount -t cifs共享win的共享文件夹? autocad小记
  10. 我国水土流失严重地区