0

sqlite データベースにデータがあります。IDデータベースからデータを削除すると、データベース内のすべてのデータを再利用したいときに、すべてのデータが主キーになりますID。例えば、

+----+--------+
| ID |  NAME  |
+----+--------+
| 01 | Taylor |
+----+--------+
| 02 |  Mark  |
+----+--------+
| 03 |  Bell  |
+----+--------+
| 04 |  Jane  |
+----+--------+

02 | Mark次に、データベースから削除すると、データベースはID自動的に再設定する必要があります。

+----+--------+
| ID |  NAME  |
+----+--------+
| 01 | Taylor |
+----+--------+
| 02 |  Bell  |
+----+--------+
| 03 |  Jane  |
+----+--------+

ありがとう。

4

1 に答える 1

3

そうしないでください。レコードを削除したからといって、データベースの ID を変更しないでください。SQLite は「実際の」データベースではありませんが、そうしないでください。

代わりに、データベースのクエリ中に行番号を取得できます。here の回答に基づいて、次のようなことができます。

SELECT id, name, 
    (SELECT COUNT(*) FROM table AS t2 
        WHERE t2.id<=t1.id) AS row_num
FROM table AS t1
ORDER BY id

注: テーブルが大きい場合、このクエリはパフォーマンスの問題になる可能性があります。まだ心配する必要はありませんが、覚えておいてください。

于 2012-12-30T09:11:12.623 に答える