-2

sqlite3 データベースを使用しています。device_ids(unique) のセットを device というテーブルに挿入しました。これは、テーブルが空のときに行われます。しかし、新しいIDを含むIDを再度挿入しようとすると、一意性のためにエラーがスローされます。

 device_all_id.each do |device_id|

     insert into device (Device_id) values ('#{device_id.first}') where  where Device_id <> '#{device_id.first}'

 end

したがって、device_ids を挿入する前にレコードが既に存在するかどうかを確認したいので、「IF EXISTS」クエリを試しましたが、構文エラーとしてスローされます。

誰でも私を助けてくれませんか..

4

1 に答える 1

1

挿入する前にチェックすると、データベースは 2 つのクエリに応答する必要があり、エラー処理が実際に減少することはありません。(エラーをトラップする必要があります。更新がうまくいかない方法はたくさんあります。) ほとんどの場合、単に

  • INSERT ステートメントの実行、
  • エラーのトラップ、および
  • エラーを解決するために適切なアクションを実行します。

あなたの質問からは、UPSERT がうまくいくかどうかは明らかではありません。この SO answerを参照してください。

于 2013-04-06T17:04:52.620 に答える