#sql #database #sqlite
#sql #База данных #sqlite
Вопрос:
Я разрабатываю приложение с использованием Ionic и Cordova SQLite. Приложение вставляет данные в sqlite, если данные не существуют в sqlite, но если данные существуют в sqlite. Затем приложение заменяет старые данные. Ниже приведен мой код. Но я не могу вставить данные в базу данных sqlite.
Создать базу данных
db = window.openDatabase("chatChannel.db", "1", "Demo SQLite Test", "2000");
$cordovaSQLite.execute(db, "CREATE TABLE IF NOT EXISTS chat_channel(id interger primary key, channel_name text unique, last_text text)")
Вставить данные
var query = "INSERT INTO chat_channel (channel_name, last_text) VALUES(?,?) ON DUPLICATE KEY UPDATE (last_text) VALUES (?)";
$cordovaSQLite.execute(db, query, [channel, $scope.messageContent], [$scope.messageContent]);
Могу ли я узнать, как вставить данные в cordova sqlite, если запись не существует в базе данных sqlite, и обновить данные, если данные существуют в базе данных.
Ответ №1:
Вы можете использовать REPLACE (https://www.sqlite.org/lang_insert.html )
REPLACE INTO chat_channel (channel_name, last_text) VALUES(?,?)
Однако для правильной работы вам необходимо иметь уникальный или первичный ключ, задействованный в запросе (в вашем случае это сработает, если channel_name является первичным ключом chat_channel или если он уникален), см. https://www.sqlite.org/lang_conflict.html для получения подробной информации о разрешении конфликтов REPLACE
Комментарии:
1. Это не сработает. Что я хочу сделать, так это когда имя_канала доступно в базе данных sqlite, тогда он заменит last_text в базе данных, но если имя_канала отсутствует в базе данных, он вставит новые данные в базу данных.