秘密基地、どこに作った?

SQLiteのテーブル内にunique属性を持つフィールドがあります。このフィールドと同名の内容を追加するとエラーが返りますが、SQLiteを呼び出すプログラム側で逐一そのエラーを例外処理しているため、プログラムとしては効率が悪いです。「(If not exist (...) insert ...のような)もしこの項目内容が存在しなければフィールドを追加する」という処理をSQLのクエリ文で完結させたいのですが、このようなことはできますでしょうか。

A 回答 (1件)

field追加(alter table)じゃなくて、「行追加時に、uniqueカラムのデータがかち合ったら追加しない」でいいですか?


「制約競合解決アルゴリズム」を ON CONFLICT で指定します
conflict-algorithm ::=ROLLBACK | ABORT | FAIL | IGNORE | REPLACE
insert文では、ON CONFLICTの代わりに or で記述できます
INSERT OR IGNORE INTO table-name (column-list) VALUES(value-list)
参考
http://www.3rd-impact.net/Document/SQLite/Transl …
    • good
    • 0
この回答へのお礼

INSERT OR IGNOREでうまくいけそうです。ありがとうございました。

お礼日時:2010/11/25 17:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す


おすすめ情報