質問: ``` INSERT INTO user_data VALUES (?, ?, ?) ``` などのようにして要素をtableにinsertする際に、 すでにinsertする要素と同一の要素がtable内に存在 する場合、insertをしないようにしたいのですが、どうすれば よろしいでしょうか? また重複する要素が一つのtable内に存在する場合、 それらを一つの要素にまとめるにはどうしたらよいでしょうか? よろしくお願いします。
回答: テーブルにユニークインデックスを設定しましょう。 例えばuser_dataというテーブルがあり、 カラムはid, name, email, passの4つだったとしましょう。 その時にemailの重複を防ぎたければ下記のようなSQLでインデックスを作成します。 ``` CREATE UNIQUE INDEX email_check ON user_data(email); ``` 参考サイト: UNIQUEインデックス > > 書式は次の通りです。 > > > > ``` > CREATE UNIQUE INDEX インデックス名 > ON テーブル名(カラム名1, カラム名2, ...); > ``` > > 【追記】 > > また重複する要素が一つのtable内に存在する場合 > > > その仕組をUPSERTと呼びます。 sqlite3でレコードがなければ追加、あれば更新 UPSERT 何をどう更新するのかはこのUPSERT文で定義することができます。