[英]sqlite TEXT column name same as value bug
我發現似乎是 sqlite 的一個奇怪錯誤。
我有一張桌子
CREATE TABLE controller(id INTEGER PRIMARY KEY ASC, controller_number TEXT, password TEXT);
有數據
INSERT INTO controller (controller_number, password) VALUES ("1234", 1234);
那里沒有問題,但請檢查一下。
sqlite> SELECT * FROM controller;
1|1234|1234
sqlite> UPDATE controller SET controller_number="12345", password="password" WHERE id=1;
sqlite> SELECT * FROM controller;
1|12345|1234
誰能解釋為什么會發生這種情況,或者這是一個應該提出的錯誤?
它可能是雙引號:
'keyword' 單引號中的關鍵字是字符串文字。 "keyword" 雙引號中的關鍵字是一個標識符。
對於與 SELECT 或 UPDATE 語句中的任何字段名稱相同的任何字段值,您必須對該字段值使用單引號(表示文字值,而不是雙引號,表示字段名稱)。 我在我的應用程序中修復了這個問題。
>CREATE TABLE controller(id INTEGER PRIMARY KEY ASC, controller_number TEXT, password TEXT);
>INSERT INTO controller (controller_number, password) VALUES ("1234", 1234);
>SELECT * FROM controller;
1|1234|1234
>UPDATE controller SET controller_number="12345", password="password" WHERE id=1;
>SELECT * FROM controller;
1|12345|1234
以上會導致問題,但如果這樣做
>UPDATE controller SET controller_number='123456', password='password' WHERE id=1;
我明白了
>SELECT * FROM controller;
1|123456|password
很明顯發生了什么,第一個 UPDATE 是設置 password=password 而不是 password="password" 並且第二個查詢以正確的方式執行。
任何人都可以詳細說明為什么會發生這種情況,還是應該首先發生?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.