2010-07-03 3 views
0

Я пробовал INSERT OR REPLACE INTO, но он не сохраняет идентификатор строки, когда он заменяет запись, чтобы обновить ее. Другой вариант - сделать это в два этапа: INSERT OR IGNORE INTO, затем UPDATE, но я бы предпочел одношаговое решение. Поэтому мне интересно, имеет ли SQLite что-то вроде ключевого слова MERGE или других простых решений?SQLite: обновить запись, если существует, иначе вставить ее?

ответ

1

Нет, SQLite не поддерживает MERGE или upsert.

Вы можете использовать свое двухэтапное решение, но то, что вы, вероятно, действительно хотите, для ROWID должно быть столбцом первого класса в вашей таблице. Если вы объявите столбец как INTEGER PRIMARY KEY, это будет псевдоним для ROWID. Тогда INSERT OR REPLACE будет работать нормально.

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