1

SQLiteを搭載したAndroidアプリがあり、テーブルを作成するときに次の行を使用します。

_id integer primary key autoincrement

私の質問は、この行を更新して、ユーザーが必要に応じて_idを変更できるかどうかです。したがって、たとえば、DBには2つのレコードがあります。

1 My First Record
2 My Second Record

更新後、次のようになります。

1 My First Record
38 My Second Record

SQLiteはこれを可能にし、簡単に適応しますか?つまり、自動作成される次の主キーは#39になりますか?

4

3 に答える 3

5

文書化されているように、の変更_idは許可されており、自動インクリメントシーケンスを適切に更新します。

やってみなよ:

$ sqlite3
SQLite version 3.7.16 2013-01-11 09:58:54
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> CREATE TABLE MyTable(_id INTEGER PRIMARY KEY AUTOINCREMENT);
sqlite> INSERT INTO MyTable DEFAULT VALUES;
sqlite> INSERT INTO MyTable DEFAULT VALUES;
sqlite> UPDATE MyTable SET _id = 38 WHERE _id = 2;
sqlite> INSERT INTO MyTable DEFAULT VALUES;
sqlite> SELECT * FROM MyTable;
1
38
39
于 2013-03-09T19:32:32.700 に答える
0

このようなことをしたい場合は、自動インクリメントを自分で管理する必要があります。SQLiteでは、自動生成されたフィールドの値を変更することはできません。別のアプローチは、別のフィールドを追加して代わりに使用することです。

また、何らかの回避策がある場合、それは良い習慣ではないことを保証できます。

于 2013-03-09T16:18:21.400 に答える
0
  1. このように主キーを変更しないでください。たとえば、外部キーなどを考えてください。Sqliteはこれを許可しません。
  2. それとは別に、自動インクリメントカウンターは別のテーブルに格納されており、何をしているのかわかりません。主キーの変更が許可された場合でも、カウンターは影響を受けません。
于 2013-03-09T16:22:28.773 に答える