2009-04-15 2 views
8

я сделать что-то вродеSQLite, ОБНОВЛЕНИЕ ИЛИ ЗАМЕНА

UPDATE ИЛИ ЗАМЕНА someTable SET A = 1, B = 2, где с = 3

я ожидать, если оно не существует, то он будет вставлен в DBS. Но ничего не происходит, и я не получаю ошибок. Как я могу вставить данные, заменить его, если он уже существует и использовать где для условия (вместо того, чтобы заменить БК уникальный идентификатор)

ответ

16

Тщательное, INSERT OR REPLACE не имеет ожидаемое поведение «ОБНОВЛЕНИЕ ИЛИ ЗАМЕНИТЬ».

Если вы не зададите значения для всех fieds, INSERT или REPLACE заменит их значениями по умолчанию, тогда как с UPDATE вы ожидаете сохранить старые значения.

См. Мой пример здесь: SQLite - UPSERT *not* INSERT or REPLACE

9

Попробуйте

INSERT OR REPLACE INTO [someTable] (a,b) VALUES(1,2) WHERE c = '3' 
+3

Этот синтаксис недействителен. Рассмотрите https://www.sqlite.org/lang_insert.html для вставки и https://www.sqlite.org/lang_select.html для выбора. Предложение не может быть добавлено после значений (...). –

Смежные вопросы