对于SQLite
主键数据类型为 int 类型。
插入的时候,不传入数据, 就是默认为自动递增处理。
last_insert_rowid() 函数用于获取最新生成的 ID
sqlite> CREATE TABLE test_create_tab2 (
...> id integer,
...> val VARCHAR(10),
...> PRIMARY KEY (id)
...> );
sqlite> INSERT INTO test_create_tab2(val) VALUES ('NO id');
sqlite> select last_insert_rowid();
last_insert_rowid()
1
sqlite> INSERT INTO test_create_tab2(val) VALUES ('NO id 2');
sqlite> select last_insert_rowid();
last_insert_rowid()
2
sqlite> select * from test_create_tab2;
id|val
1|NO id
2|NO id 2
sqlite> INSERT INTO test_create_tab2(id, val) VALUES (100, 'id is 100');
sqlite> INSERT INTO test_create_tab2(val) VALUES ('NO id again');
sqlite> select * from test_create_tab2;
id|val
1|NO id
2|NO id 2
100|id is 100
101|NO id again
注意:
对于无主键的表
SQLite 中还有一个 伪列 rowid, 可以作为自动递增的查询处理。
sqlite> CREATE TABLE test_create_tab3 (
...> id integer,
...> val VARCHAR(10)
...> );
sqlite>
sqlite> INSERT INTO test_create_tab3(id, val) VALUES (1, 'Test1');
sqlite> INSERT INTO test_create_tab3(id, val) VALUES (2, 'Test2');
sqlite> INSERT INTO test_create_tab3(id, val) VALUES (100, 'Test100');
sqlite> INSERT INTO test_create_tab3(id, val) VALUES (101, 'Test101');
sqlite> select rowid, id, val from test_create_tab3;
rowid|id|val
1|1|Test1
2|2|Test2
3|100|Test100
4|101|Test101
(1) 如何建立自动增长字段?
简短回答:声明为 INTEGER PRIMARY KEY 的列将会自动增长。
长一点的答案: 如果你声明表的一列为 INTEGER PRIMARY KEY,那么, 每当你在该列上插入一NULL值时, NULL自动被转换为一个比该列中最大值大1的一个整数,如果表是空的, 将会是1。 (如果是最大可能的主键 9223372036854775807,那个,将键值将是随机未使用的数。) 如,有下列表:
CREATE TABLE t1(
a INTEGER PRIMARY KEY,
b INTEGER
);
在该表上,下列语句
INSERT INTO t1 VALUES(NULL,123);
在逻辑上等价于:
INSERT INTO t1 VALUES((SELECT max(a) FROM t1)+1,123);
有一个新的API叫做 sqlite3_last_insert_rowid(), 它将返回最近插入的整数值。
注意该整数会比表中该列上的插入之前的最大值大1。该键值在当前的表中是唯一的。但有可能与已从表中删除的值重叠。要想建立在整个表的生命周期中唯一的键值,需要在 INTEGER PRIMARY KEY 上增加AUTOINCREMENT声明。那么,新的键值将会比该表中曾能存在过的最大值大1。如果最大可能的整数值在数据表中曾经存在过,INSERT将会失败, 并返回SQLITE_FULL错误代码。
相关推荐
使用R语言(ggplot2)绘制KEGG信号通路富集气泡图
本文详细介绍了如何使用R语言的ggplot2包绘制KEGG信号通路富集气泡图,从数据预处理到高级定制技巧,帮助生物信息学研究者直观展示富集分析结果。文章涵盖了气泡图的核心绘制方法、布局优化、常见问题解决方案以及交互式可视化扩展,是进行KEGG富集分析可视化的实用指南。
SQLite之rowid与sqlite3_last_insert_rowid()
SQLite数据库中的表均有一个特殊的rowid字段,它是一个不重复的64位有符号整数,默认起始值为1。rowid别名为oid或_rowid_,但在创建表的SQL声明语句中只能使用rowid作为关键字。如果在创建表的时候设置了类型为integer的具有自动增长性的主键,那么这时的主键相当于是rowid的别名。 rowid只能是单调递增的,它由SQLite内部维护,不能自己指定。对于失败的插入操作
Android布局基础与UI设计入门:打造精美应用界面
恭喜你!现在你已经掌握了Android UI开发的基础知识,包括各种布局类型、常用控件的使用以及一些UI优化技巧。这些知识将帮助你设计出既美观又实用的Android应用界面。
SQLite Autoincrement及实例,主键自增长
在上面的示例中,我们创建了一个名为users的表,其中包含三个列:id、name和age。在id列的声明中,我们使用了AUTOINCREMENT关键字,这将告诉SQLite自动生成唯一的自增ID。SQLite中的Autoincrement是一个用于生成自增ID的特殊关键字。当在表的列声明中使用Autoincrement时,SQLite会自动为该列生成一个唯一的自增ID。需要注意的是,当使用Autoincrement时,SQLite会自动为每个插入的行生成一个唯一的自增ID,无需手动指定。
ZLMediaKit在Windows下启用WebRtc编译(64位)
准备软件 cmake-gui vs2017 已经编译好的windows版本openssl(下载地址) 当然,你完全可以自己按照openssl的官网教程自己编译windows版本的openssl libsrtp编译安装 首先,需要将下载好的openssl解压并添加到环境变量。如下图,将下图路径添加到环境变量 其次,下载libsrtp(下载地址) 下载后解压并新建build文件夹,如下图: 在合适位置新建文件夹放置install后的srtp文件,如"D:\develop20..
Fast-LIO2轮速计融合实战:打滑检测与协方差调参避坑指南
多传感器融合是提升移动机器人定位鲁棒性的关键手段。在激光雷达与惯性测量单元(IMU)紧耦合的基础上,加入轮式编码器作为额外的速度约束,能够有效抑制长走廊、重复纹理等退化场景下的漂移。其核心原理是通过运动学模型将轮速转换为机体系速度,并作为因子引入迭代误差状态卡尔曼滤波器(ESIKF)。然而,打滑现象与协方差参数设置是融合成败的关键。本文从工程实践出发,系统梳理了传感器配置、外参标定、打滑检测策略(运动学一致性、轮速自洽性)以及观测噪声协方差R与初始协方差P0的调参方法,并给出实测参数与问题排查速查表,为在F
Python3操作SQLite3创建表主键自增长|CRUD基本操作
SQLite3建表主键自增长 Python操作SQLite3数据库自增长主键赋值None Python批量插入SQLite3数据库操作 Python操作数据库SQLite3基本CRUD
树莓派4B学习笔记(5)—— 来个GPIO操作吧
一. GPIO库介绍 对于树莓派,现在有wiringPi,BCM2835,python三种库可以使用。 python 开发语言:python 简单介绍:树莓派官方资料中推荐且容易上手,毫无疑问的说python非常适合树莓派,树莓派也非常适合python。 wiring PI 开发语言:C、C++ 简单介绍:功能很强大,适合那些具有C语言基础,在接触树莓派之前已经接触过单片机或者嵌入式开发的人群。wiring Pi的API函数和arduino非常相似,且作者也给出了很多示例代码,这也使得它广受欢迎。
sqlite 如何建立自动增长字段
sqlite 如何建立自动增长字段
无网环境也能玩转DBeaver?手把手教你离线安装与ClickHouse连接(附实测jar包)
本文详细介绍了在无网环境下如何离线安装DBeaver并配置ClickHouse连接的完整指南。通过准备必备工具如DBeaver安装包、ClickHouse JDBC驱动及Maven本地仓库,确保在物理隔离环境中实现数据库管理。文章包含详细的安装步骤、驱动配置和性能优化建议,帮助开发者在严格网络限制下高效工作。
Mamba SSM 实战:IMDb 文本分类 + Mamba-ssm 全流程
Mamba SSM 文本分类链路:IMDb 二分类 → MambaLMHeadModel (d_model=256, n_layer=8, d_state=16, exp2=2) → 末 token 分类头。5 epoch 达 89.2% 准确率 (与 BERT-base 持平), 但显存降低 44% (3.5GB vs 6.2GB)。建议序列长度 ≥ 1024 再选 Mamba, 短序列 (< 512) 用 BERT 更高效。扩展时注意d_state。
sqlite 自动增长
为了建立一个sqlite表, 我找到了一个工具 navicat for sqlite ,我以前用过for mysql的,发现很好用,就试着找了一下navicat for sqlite 结果真的有。 自动增长这个,在界面上就是找不到。以为没有,查了下怎么写sqlite的sql语句, 发现只有Integer类型的才能加这个特性。 于是改变一下,就出现了自动递增的选项了,勾选,ok了。 发现数据库中出现...
华为OD机试E卷 -猜字谜(Java & Python& JS & C++ & C )
小王设计了一个简单的猜字谜游戏,游戏的谜面是一个错误的单词,比如nesw,玩家需要猜出谜底库中正确的单词。猜中的要求如下:请你写一个程序帮忙在谜底库中找到正确的谜底。谜面是多个单词,都需要找到对应的谜底,如果找不到的话,返回”not found”
sqlite设置主键自动增长
sqlite中设置主键的自动增长 不同于其他数据库管理系统 比如 创建表的时候: CREATE TABLE student ( ID INTEGER PRIMARY KEY AUTOINCREMENT, studentName NVARCHAR(100) NOT NULL )...
华为的C语言编程规范.pdf
华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。
win10 跳过U8环境检测的IE WebControls.rar
win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。
sqlite3怎么建立自动增长字段
转自:http://blog.youkuaiyun.com/maigan323/article/details/6903279(1)如何建立自动增长字段?简短回答:声明为INTEGERPRIMARYKEY的列将会自动增长。长一点的答案:如果你声明表的一列为INTEGERPRIMARYKEY,那么,每当你在该列上插入一NULL值时,NULL自动被转换为一个比该列中最...
visio安装包
Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。
【小技巧】SQLite语句设置 自动增长字段
在SQLike中 想要使用自动增长的时候,比如 id。创建表的时候可以这样设置 public void onCreate(SQLiteDatabase sqlite) { String sql="create table if not exists User"+"(id INTEGER PRIMARY KEY AUTOINCREMENT,name text)";
WINCC7.3破解文件
WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!
SQLite主键自动增长
SQLite中,一个自增长字段定义为INTEGER PRIMARY KEY AUTOINCREMENT,那么在插入一个新数据时,只需要将该子弹的值指定为NULL,即可由引擎自动设定其值,引擎会设定为最大的rowid+1,。如果表为空,,那么将会插入1。 CREATE TABLE Product( ID INTEGER PRIMARY KEY AUTOINCREMENT, ...
SQLite设置主键自动增长及插入语法
SQLite中,一个自增长字段定义为INTEGER PRIMARY KEY AUTOINCREMENT,那么在插入一个新数据时,只需要将这个字段的值指定为NULL,即可由引擎自动设定其值,引擎会设定为最大的rowid+1。如果表為空,那麼將會插入1。 比如,有一張表ID為自增: CREATE TABLE Product ( ID INTEGER PRIMA...
sqlite3如何建立自动增长字段?
(1) 如何建立自动增长字段? 简短回答:声明为 INTEGER PRIMARY KEY 的列将会自动增长。 长一点的答案: 如果你声明表的一列为 INTEGER PRIMARY KEY,那么, 每当你在该列上插入一NULL值时, NULL自动被转换为一个比该列中最大值大1的一个整数,如果表是空的, 将会是1。 (如果是最大可能的主键 9223372036854775807,那个,将键值将
Sqlite中创建自动增长列
<br />id INTEGER PRIMARY KEY AUTOINCREMENT
SQLite Expert 删除表数据并重置自动增长列
用下面的语句肯定是行不通的,语句不支持 truncate table t_Records 方法:1.删除表数据 delete from t_Records where 1==1 2.重置自动增长列 update sqlite_sequence set seq=0 where name='t_Records' /*name :是表名*/ SQLite E...
SQLITE3和MySql的自动增长
1、Sqlite3:CREATE TABLE person (personid INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(20)) 2、MySql:CREATE TABLE person (personid INTEGER PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20))
sqlite清空表还原自动增长序列
SQLite清空表代替Mysql中TRUNCATE TABLE的方法 如何清空SQLIte表中的数据 并且自增长id 还原为 1? 在SQlite 中的解决方案: delete from '表名'; select * from sqlite_sequence; update sqlite_sequence set seq=0 where name='表名
446



被折叠的 条评论
为什么被折叠?



