sqlite TEXT имя столбца совпадает со значением bug - PullRequest
0 голосов
/ 21 марта 2012

Я обнаружил странную ошибку в 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

может кто угоднообъясните, почему это происходит, или это ошибка, которая должна возникать?

Ответы [ 2 ]

2 голосов
/ 21 марта 2012

Это могут быть двойные кавычки:

'ключевое слово' Ключевым словом в одинарных кавычках является строковый литерал. "ключевое слово" Ключевое слово в двойных кавычках является идентификатором.

из http://www.sqlite.org/lang_keywords.html

0 голосов
/ 22 марта 2012
>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

Понятно, что происходит, первое ОБНОВЛЕНИЕ устанавливало пароль = пароль, а не пароль = "пароль", а второй запрос выполняется правильно.

Кто-нибудь может уточнить, почему это происходит, или это должно произойти в первую очередь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...