在Titanium中的表中插入一行

时间:2014-11-02 09:18:54

标签: mysql database titanium

当表空时,我在表上使用了insert查询,它执行完美并插入数据,当我使用相同值的相同插入查询时,弹出错误

我收到错误

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设置为唯一但我不明白为什么它会弹出错误,如果该值已经存在,它应该跳过它。

我必须做些什么来跳过错误?

2 个答案:

答案 0 :(得分:1)

您有几种方法可以解决此问题,您应该为您的应用选择最佳解决方案

  1. 如果您想忽略这些错误 - 请在代码中捕获此错误,并忽略它。
  2. 如果您想使用新值更新所有行信息 - 您可以改为“INSERT INTO” - 使用“REPLACE INTO”。
  3. 如果您只想从请求更新多个字段 - 您可以使用“INSERT INTO ..... ON DUPLICATE KEY UPDATE ....”

答案 1 :(得分:0)

如果您将列设置为唯一,则如果该值已存在,则不会保留该列。因为,它类似于主键 唯一 主键 之间的唯一区别是主键只能设置为表中的一列而unique可以设置为表格中的多个列。

如果要添加值,即使它已经存在,也要删除该列的唯一约束。