SQLite 自动增长

SQLite 自动增长,第1张

概述对于SQLite主键数据类型为 int 类型。 插入的时候,不传入数据, 就是默认为自动递增处理。 last_insert_rowid() 函数用于获取最新生成的 IDsqlite> CREATE TABLE test_create_tab2 ( ...> id integer, ...> val VARCHAR(10), ...> PRIMARY
对于sqlite主键数据类型为 int 类型。 插入的时候,不传入数据, 就是默认为自动递增处理。 last_insert_rowID()  函数用于获取最新生成的 IDsqlite> 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()1sqlite> INSERT INTO test_create_tab2(val) VALUES ('NO ID 2');sqlite> select last_insert_rowID();last_insert_rowID()2sqlite> select * from test_create_tab2;ID|val1|NO ID2|NO ID 2sqlite> 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|val1|NO ID2|NO ID 2100|ID is 100101|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,'Test100');sqlite> INSERT INTO test_create_tab3(ID,val) VALUES (101,'Test101');sqlite> select rowID,ID,val from test_create_tab3;rowID|ID|val1|1|Test12|2|Test23|100|Test1004|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错误代码。
总结

以上是内存溢出为你收集整理的SQLite 自动增长全部内容,希望文章能够帮你解决SQLite 自动增长所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1173606.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存