Как проверить, если результат запроса пуст

tx.executeSql("SELECT * FROM Routes WHERE id_object = 0", [], 
function (tx, result) 
{ 
alert('You already added'); 
},
function (tx, error) { 
tx.executeSql('INSERT INTO Routes (id_object) VALUES (0)');             
alert('add successfull')} ) 
}  

Если результат набора SELECT * FROM Routes WHERE id_object = 0 пусто, должно выполняться tx.executeSql('INSERT INTO Routes (id_object) VALUES (0)');

1 ответ

Это id_object уникальный (т. е. первичный ключ или объявленный UNIQUE)? Если это так, вы можете просто

INSERT OR IGNORE INTO Routes (id_object) VALUES (0);

Если твой id_object столбец нельзя сделать уникальным, тогда вам нужно то, что иногда называется UPSERT (обновить или вставить) заявление. SQLite не поддерживает это напрямую, но, возможно, вы можете достичь этого с помощью комбинации триггеров.

Безусловно, самый простой способ - выполнить тест в логике вашей программы, а не в SQL, например, на основе

SELECT COUNT(*) FROM Routes WHERE id_object = 0"

и если результат равен 0, сделайте вашу вставку.

Другие вопросы по тегам