質問

い文字列のリストに挿入します。彼らは一意でなければなりません。時を挿入したいと思いIDを使用して外部キーが別のテーブルを使用していますのでlast_insert_rowid.取得します2。

  1. を利用した場合、置き換えると、そのid (整数の主キー)を更新する 休憩っdb(応募ポイント 存在しないId)
  2. を利用した場合、無視し、rowidは更新されませんので初期費用等は一切頂きませんの正しいID

どうやっていけばいいですか?Id?ばん必要ないのpc利用についてのselectステートチェックして挿入する文字列の場合のだが存在します。どうすればよいのか。

役に立ちましたか?

解決 2

使っている現時点では以下

insert into tbl(c_name) select 'val' where not exists(select id from tbl where c_name ='val');
select id from tbl where c_name ='val';

他のヒント

が独自の制約違反が発生すると、置き換えアルゴリズムを削除し、既存の行の原因となる制約違反以前の挿入と更新の現在行にコマンドに続けて実行します。これにより、rowidの変更を作成し、以下の問題

Y:> **sqlite3 test**  
SQLite version 3.7.4  
Enter ".help" for instructions  
Enter SQL statements terminated with a ";"  
sqlite> **create table b (c1 integer primary key, c2 text UNIQUE);**  
sqlite> **insert or replace into b values (null,'test-1');**  
sqlite> **select last_insert_rowid();**  
1  
sqlite> **insert or replace into b values (null,'test-2');**  
sqlite> **select last_insert_rowid();**  
2  
sqlite> **insert or replace into b values (null,'test-1');**  
sqlite> **select last_insert_rowid();**  
3  
sqlite> **select * from b;**  
2|test-2  
3|test-1  

作品の周りには定義が変わるのc2列として。

create table b (c1 integer primary key, c2 text UNIQUE ON CONFLICT IGNORE);

を取り除くには"交換"の項から挿入します;

そして、試験後に挿入する必要がありまを記憶させることができます。sql: select last_insert_rowid(), changes();

sqlite> **create table b (c1 integer primary key, c2 text UNIQUE ON CONFLICT IGNORE);**  
sqlite> **insert into b values (null,'test-1');**  
sqlite> **select last_insert_rowid(), changes();**  
1|1  
sqlite> **insert into b values (null,'test-2');**  
sqlite> **select last_insert_rowid(), changes();**  
2|1  
sqlite> **insert into b values (null,'test-1');**  
sqlite> **select last_insert_rowid(), changes();**  
2|0  

の返り値は変化後の3挿入される通知を申請する必要があるということをルックアップのrowidの"テスト-1"からのニーズがなかったとしてファイルです。もちろんこのマルチユーザのシステムで、必要なものを包むことの取引によります。

"でなければならな独特の"いい味だしてくれているのだと、したいエラーとして、結果がない場合?場合あなただけの文字列自体をキーにそのテーブル、そのかわからないかのいずれか1や2のときの問題--いエラーとしてご希望の場合は不要な重複が、それ以外のID。かを明らかにできるご質問は少ない例のSQLコードを使うと、テーブルから行動で観察し、行動すい代わりに...?

編集:の編集がっていくかは、"SQL"というまっ!場合はテーブルから、例えば:

CREATE TABLE Foo(
  theid INTEGER PRIMARY KEY AUTOINCREMENT,
  aword TEXT UNIQUE ABORT
  )

その挿入を試み、複製単語なの ABORT キーワードはオプションでのデフォルト UNIQUE)--など したい されていると言うのない"、すなわち、エラーがない場合?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top