亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQLite > 正文

SQLite3中自增主鍵相關知識總結

2020-01-31 15:12:04
字體:
來源:轉載
供稿:網友

一、SQLite清空表并將自增列歸零

SQL標準中有TRUNCATE TABLE語句,用來清空表的所有內容。
但SQLite不支持這個語句。在SQLite中直接使用 DELETE FROM TableName 就可以了。
對于大多數DBMS來說,用DELETE不如用TRUNCATE 速度快,因為TRUNCATE 不用訪問整個表,不用記錄數據的變動。

SQLite雖然不支持TRUNCATE,但它對DELETE做了優化:
通常在清空表的時候,還需要把自增列歸零。在SQLite中定義自增列的方法如下:

復制代碼 代碼如下:
CREATE TABLE TableName ( id INTEGER PRIMARY KEY AUTOINCREMENT, name varchar, type Integer );

當SQLite數據庫中包含自增列時,會自動建立一個名為 sqlite_sequence 的表。
這個表包含兩個列:name和seq。name記錄自增列所在的表,seq記錄當前序號(下一條記錄的編號就是當前序號加1)。
如果想把某個自增列的序號歸零,只需要修改 sqlite_sequence表就可以了。

復制代碼 代碼如下:
UPDATE sqlite_sequence SET seq = 0 WHERE name='TableName';

也可以直接把該記錄刪掉:      

復制代碼 代碼如下:
DELETE FROM sqlite_sequence WHERE name='TableName';

要想將所有表的自增列都歸零,直接清空sqlite_sequence表就可以了:
復制代碼 代碼如下:
DELETE FROM sqlite_sequence;

二、Sqlite中INTEGER PRIMARY KEY AUTOINCREMENT和rowid的使用

在用sqlite設計表時,突然想到一個問題,就是我設計的表中,每個表都有一個自己的整形id值作為主鍵,
其實可以不指定這么一個id值,sqlite內部本來就會為每個表加上一個 rowid,這個rowid可以當成一個隱含的字段使用,

為什么不直接使用這個內部的rowid作為每個表的id主鍵呢。
使用自增長字段為主鍵有不少問題,比如維護或是在大型分布應用中主鍵沖突的解決等。
在一些大型分布應用中主鍵一般選用guid,這可以有效的避免主鍵沖突,減少對主鍵維護的工程。
當然,對于中小型的應用,自增長字段的好處更多一些,簡單、快速。

Sqlite中,一個自增長字段定義為 INTEGER PRIMARY KEY AUTOINCREMENT
那么在插入一個新數據時,只需要將這個字段的值指定為NULL,即可由引擎自動設定其值,
引擎會設定為最大的rowid+1 當然,也可以設置為非NULL的數字來自己指定這個值,但這樣就必須自己小心,不要引起沖突。

rowid的新值會這個最大數之前隨機找一個沒被使用了的值。所以在rowid達到最大值前,rowid的值是嚴格單調增加的。
INTEGER PRIMARY KEY AUTOINCREMENT 自增長字段的算法與rowid稍微有些不同。
第一,在達到最大值后,rowid會找已被刪除的字段對應的rowid作為新值,而自增長字段則會丟出一個SQLITE_FULL的錯誤。
第二,自增長字段在增加新值時,是找一個從沒被使用過的rowid作為新值,而rowid則是找最大已存在的rowid+1。

這里對應用的影響會比較大,尤其是一些對id值有依賴的元記錄,只適合使用自增長字段而不能用rowid。
比如,我們設計一個元記錄表:

復制代碼 代碼如下:
Create table meta_struct(id INTEGER PRIMARY KEY AUTOINCREMENT, name varchar, type Integer);

然后,定義一個一級表,來描述其它表的結構:
復制代碼 代碼如下:
Create table meta_table(tableid INTEGER, table_field integer)

最后,我們的應用可以根據這個一級表來產生實際使用的二級表。
這樣為保證兼容性meta_struct中的id必須是唯一的,如果有字段被刪除,也不能重復使用這個字段的id值,不然,在數據庫合并時,
一級表和二級表就會混亂。所以meta_struct表中的主鍵只能使用自增長字段,而不能用rowid。

第三,使用自增長字段,引擎會自動產生一個sqlite_sequence表,用于記錄每個表的自增長字段的已使用的最大值,用戶可以看到,
并可以用使用Update、Delete和Insert操作,但不建議這么使用,這會讓引擎混亂。如果使用rowid,也會有這么一個內部表,用戶可以維護rowid值,但看不到。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩一区二区在线| 国产伦精品免费视频| 成人h视频在线观看播放| 在线观看91久久久久久| 久久99久久99精品中文字幕| 国产亚洲精品久久| 亚洲精品国产电影| 日韩在线视频国产| 日本国产精品视频| 久久久久久久久久久亚洲| 亚洲第五色综合网| 日本韩国在线不卡| 国产精品视频久久久| 97国产精品视频| 一本大道久久加勒比香蕉| 日韩视频在线一区| 亚洲亚裔videos黑人hd| 国产精品久久久久久av| 成人乱色短篇合集| 久久精品国产一区二区电影| 伊人久久综合97精品| 亚洲欧洲自拍偷拍| 伊人久久五月天| 亚洲国产中文字幕在线观看| 成人激情视频在线播放| 亚洲人成电影在线观看天堂色| 亚洲第一页在线| 国产女人18毛片水18精品| 88xx成人精品| 欧美精品激情视频| 欧美亚洲午夜视频在线观看| 久久久久久久91| 一本色道久久综合狠狠躁篇的优点| 亚洲精品乱码久久久久久按摩观| 社区色欧美激情 | 亚洲精品久久久一区二区三区| 日韩欧美中文免费| 91精品视频在线看| 亚洲人精选亚洲人成在线| 国产精品高精视频免费| 欧美性猛交xxxx富婆弯腰| 亚洲一区二区三区777| 国产精品视频公开费视频| 国产精品一区二区久久国产| 不卡av日日日| 欧美成人精品xxx| 国产精品日韩一区| 日韩在线中文视频| 国产精品福利在线| 欧美日韩国产一中文字不卡| 国产精品中文在线| 中文字幕日韩欧美精品在线观看| 中文字幕一区电影| 成人a免费视频| 欧美天天综合色影久久精品| 色狠狠av一区二区三区香蕉蜜桃| 2019中文字幕全在线观看| 久久久久久久亚洲精品| 国产精品视频一| 日韩专区在线播放| 色小说视频一区| 日韩大片免费观看视频播放| 欧美一区二区三区免费视| 色偷偷av亚洲男人的天堂| 欧美激情一区二区三级高清视频| 亚洲97在线观看| 丝袜亚洲另类欧美重口| 国产97人人超碰caoprom| 成人免费自拍视频| 欧美成人免费在线观看| 777午夜精品福利在线观看| 亚洲人永久免费| 欧洲日韩成人av| xvideos成人免费中文版| 亚洲最大福利视频网| 91精品啪aⅴ在线观看国产| 精品久久久久人成| 成人福利免费观看| 日韩美女在线观看一区| 日本精品一区二区三区在线| 国产亚洲精品久久久优势| 68精品国产免费久久久久久婷婷| 91在线无精精品一区二区| 欧美日韩在线免费观看| 日韩av在线免费观看一区| 亚洲一区二区三区乱码aⅴ| 国产精品国产三级国产专播精品人| 午夜精品一区二区三区在线| 欧美老女人性视频| 亚洲精品国产精品国自产在线| 亚洲片国产一区一级在线观看| 久久久久久国产| 日韩国产中文字幕| 日韩欧美国产高清91| 国产一区二区三区在线观看视频| 亚洲香蕉av在线一区二区三区| 伊人一区二区三区久久精品| 欧美专区中文字幕| 美女扒开尿口让男人操亚洲视频网站| 日韩欧美国产中文字幕| 国产精品成人av在线| 久久视频免费在线播放| 久久91亚洲精品中文字幕奶水| 久久夜精品va视频免费观看| 精品久久久免费| 亚洲aa在线观看| 97视频com| 亚洲va国产va天堂va久久| 激情亚洲一区二区三区四区| 色琪琪综合男人的天堂aⅴ视频| 成人有码视频在线播放| 国产成人精彩在线视频九色| 久久成人人人人精品欧| 欧美日韩一区二区在线| 91在线色戒在线| 中文字幕精品一区久久久久| 在线播放日韩av| www.日韩免费| 久久久国产在线视频| 一本色道久久88综合亚洲精品ⅰ| 91精品在线一区| 清纯唯美亚洲综合| 成人免费在线网址| 日韩综合视频在线观看| 国产亚洲精品美女| 日本三级韩国三级久久| 国产精品久久视频| 最近中文字幕2019免费| 久久综合伊人77777蜜臀| 久久久成人精品| 亚洲图中文字幕| 久久成人av网站| 在线激情影院一区| 国产日韩在线一区| 久久精品中文字幕| 成人黄色免费看| 日韩一区av在线| 免费97视频在线精品国自产拍| 亚洲性生活视频在线观看| 成人精品在线视频| 亚洲第一男人av| 欧美视频在线视频| 亚洲精品美女久久久| 97精品国产97久久久久久免费| 国产精品久久91| 91免费在线视频网站| 91精品国产综合久久香蕉的用户体验| 最近中文字幕日韩精品| 亚洲小视频在线| 成人xxxx视频| 国产精品久久久久久搜索| 欧美激情视频三区| 欧美综合第一页| 国产精品露脸av在线| 亚洲精品国精品久久99热一| 精品中文字幕视频| 国产精品久久综合av爱欲tv| 日韩精品免费电影| 久久久av一区| 国产欧美日韩高清| 欧美孕妇性xx| 亚洲成人av片在线观看| 7777kkkk成人观看| 夜夜嗨av色综合久久久综合网|