[英]Issue with sqlite TOTAL() command, result has a (6 char) number limit
[英]Inconsistent result with sqlite delete command with limit enabled
這是我的sqlite db詳細信息,
sqlite> .table
url_db
sqlite> .schema url_db
CREATE TABLE url_db(URL TEXT UNIQUE);
sqlite> select * from url_db;
play.googleapis.com
notifications.google.com
contacts.skype.com
edge.skype.com
people.skype.com
我想執行命令delete from url_db limit 1
。
因此,我已經從官方下載頁面下載了完整的源代碼(sqlite-src-3240000.zip)。
使用選項“ SQLITE_ENABLE_UPDATE_DELETE_LIMIT = 1”編譯源代碼
當我執行該命令(執行命令)時,有時會刪除隨機條目,但不會刪除第一個條目。 我想刪除play.googleapis.com
,相反,該命令刪除了contacts.skype.com
。
sqlite> select * from url_db;
play.googleapis.com
notifications.google.com
edge.skype.com
people.skype.com
這是什么原因造成的? 我正在實現一個FIFO列表,當條目達到500時,我需要刪除第一個條目。
有時會刪除隨機條目,但不會刪除第一個條目。
您誤解了關系數據庫。 表格代表無序集。 除非您明確定義順序,否則表中沒有“第一”行。
由於此問題經常發生,因此SQLite具有內置的變通方法,即rowid
“ column”。 您可以將其用作常規列,從而得到:
delete from url_db
order by rowid
limit 1;
就個人而言,我更喜歡顯式聲明的自動增量列,但是SQLite內置於此函數中(與其他數據庫不同)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.