2016-04-13 3 views
1

表と表のページがあります。そのテーブルのページが本のdbIdを外部キーとして持っているとします。ブックの行でINSERT OR REPLACEを実行すると、書籍のdbIdが変更されますか?依存する外部表を持つsqlite行のINSERT OR REPLACE

本はtitle="Song of Songs", author="King Solomon",pages=50"と書いてありますが、書籍のタイトルを変更したいとします。これは行の置換につながります。ですから、問題は:置き換えによって本のdbIdが変更されるのでしょうか?私はそれがすべきではないと思うが、私は知らない。

だから、これは

+0

はい、IDの変更を交換することを使用して関連データをフェッチするクエリの下に使用します。なぜUPDATEを使用しないのですか? –

答えて

0

documentationがINSERTについてOR REPLACE言うREPLACE CONFLICT ONうとしている:

UNIQUEまたはPRIMARY KEY制約違反が発生した場合、REPLACEアルゴリズムが原因となっている既存の行を削除します現在の行を挿入する前に制約違反が発生し、コマンドは正常に実行され続けます。

新しいdbIdは古いものと同じ値を持つ場合、(明らかに)変更されません。しかし、別の列で制約違反が発生した場合、新しいdbIdは異なる値を持つ可能性があります(特に、autoincrementing列の場合)。あなたのアイデアを実現するため

0

1 :)まず選択クエリを使用して第1のテーブルからの外部キーを取得。

2 :)次に、外部テーブルの外部キーを使用して関連するデータを取得するプロセスでこの外部キーを渡すことができるパラメータを使用して関数を作成します。

3 :)次にKEY-

databaseObject.update(TABLE_NAME, values, COLOMN_NAME + " = ?", 
      Array_of_replacing_values); 
関連する問題