Я пытаюсь обновить некоторые значения в таблице sqlite. В запросе на обновление, если некоторые поля имеют имя столбца таблицы, значение заканчивается как значение этого столбца, а не заданное значение.
Я пытался найти ответ на другой вопрос, но не нашел. Я не знаю, упускаю ли я здесь концепцию или есть ограничение sqlite.
Моя таблица выглядит так:
CREATE TABLE product (
id INTEGER PRIMARY KEY,
name TEXT,
barcode TEXT,
sku TEXT
)
Допустим, я добавляю пример продукта со следующим запросом:
INSERT INTO product (id, name, barcode, sku) VALUES (1, "Product Example", "2095063206626", "SKU912132151")
Всякий раз, когда я пытаюсь обновить его с помощью запроса, который включает значение, которое ссылается на имя столбца, например:
UPDATE product SET name = "Product edited", barcode = "ID", sku = "BARCODE" WHERE id = 1
Он устанавливает значение как текущее значение столбца для данной строки, и я получаю этот объект в базе данных:
{
"id" = 1
"name" = "Product edited"
"barcode" = 1
"sku" = "2095063206626"
}
И я действительно ожидаю этого:
{
"id" = 1
"name" = "Product edited"
"barcode" = "ID"
"sku" = "BARCODE"
}
Есть идеи?
@Shawn Поскольку я использовал angular, я использовал одинарные кавычки для идентификации строки запроса и двойные кавычки для строковых полей запроса. Я попробую изменить одинарные кавычки и посмотреть, исправит ли это. Большое спасибо.
Проблема была вызвана использованием двойных кавычек для строк в запросе. Двойные кавычки используются для идентификаторов в sqlite, как указал @Shawn.
В SQL двойные кавычки предназначены для идентификаторы, как и столбец с именем ID. Одинарные кавычки предназначены для строк. Вы устанавливаете
barcode
значение столбцаID
.