2014-11-02 3 views
0

Я использовал запрос вставки в таблице, когда таблица пуста, она отлично выполняет и вставляет данные, когда я использую один и тот же запрос вставки с одинаковыми значениями, затем он появляется с помощью ошибкаВставить строку в таблицу в Titanium

и я получаю сообщение об ошибке

var insert_query= Alloy.Globals.database_file.execute('INSERT INTO get_appointments (appointment_number,end_date_time,location,start_date_time) VALUES (?,?,?,?)', app_number, app_end_time,app_loc, app_start_time); 


[ERROR] : Script Error { 
[ERROR] :  backtrace = "#0() at :0"; 
[ERROR] :  line = 127; 
[ERROR] :  message = "Error occurred calling next on a PLSqliteResultSet. SQLite error: 'column appointment_number is not unique' for 'INSERT INTO get_appointments (appointment_number,end_date_time,location,start_date_time) VALUES (?,?,?,?)'"; 
[ERROR] :  sourceId = 299620896; 
[ERROR] :  sourceURL = "file:///Users/obaid_infrability/Library/Application%20Support/iPhone%20Simulator/7.1/Applications/F58D6E16-22D1-4C45-A800-7DE57DA00DDA/Qima%20App.app/app.js"; 
[ERROR] : } 

причиной этой ошибки является appointment_number установлен на уникальный, но я не понимаю, почему это всплывает ошибка, что нужно просто пропустить, если значение уже существует.

Что мне нужно сделать, чтобы пропустить ошибку?

ответ

1

У вас есть несколько вариантов, чтобы справиться с этим, и вы должны выбрать лучшее решение для вашего приложения

  1. Если вы хотите, чтобы игнорировать эти ошибки - поймать эту ошибку в коде, и игнорировать его.
  2. Если вы хотите обновить всю информацию о строках новыми значениями, вы можете вместо этого включить «INSERT INTO» - использовать «REPLACE INTO».
  3. Если вы хотите обновить несколько полей только из запроса - вы можете использовать «INSERT INTO ..... дублированием KEY UPDATE ....»
+0

Ваше решение кажется интересным, но можете ли вы рассказать мне больше о том, как «поймать эту ошибку в своем коде и проигнорировать ее». как это сделать? – obaid

+0

Я использовал try { var insert_query = Alloy.Globals.database_file.execute ('INSERT INTO get_appointments (destination_number, end_date_time, location, start_date_time) VALUES (?,?,?,?)', App_number, app_end_time, app_loc, app_start_time); } catch (e) { var message = e.message; console.log ('error =' + message); } – obaid

+0

@obaid try-catch - хороший вариант, и я думаю, что вы сделали это правильно, но небольшой комментарий ** остерегайтесь 'console.log' использовать' Ti.API.info' вместо **. – turtle

0

Если установить столбец Уникальный он не будет сохраняться, если значение уже существует. Так как это похоже на первичный ключ . Единственное различие между уникальными и первичный ключ является то, что первичный ключ может быть установлен только в одном столбце в таблице, тогда как уникальный может быть установлен на более чем одного столбца в таблице.

Удалить уникальное ограничение для столбца, если вы хотите добавить значение, даже если оно уже существует.

+0

Моя цель состоит в том, чтобы не добавлять одно и то же значение снова, если оно существует. – obaid

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