Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menetapkan Semula Kekunci Utama Auto-Incrementing dalam SQLite?
Kaedah tetapan semula kunci utama penambahan automatik SQLite
Menetapkan semula nilai kunci primer yang meningkat secara automatik adalah masalah biasa apabila bekerja dengan pangkalan data SQLite. Artikel ini akan meneroka perkara ini dan memberikan penyelesaian yang berkesan.
Senario dan soalan
Pengguna cuba menetapkan semula medan kenaikan automatik untuk berbilang jadual dalam pangkalan data SQLite. Walau bagaimanapun, menggunakan perintah DELETE FROM
untuk memadam semua data tidak menetapkan semula medan kepada 0. Sebaliknya, kenaikan automatik terus meningkat daripada nilai terakhir selepas data dipadamkan.
Penjelasan terperinci
Masalah ini timbul kerana SQLite menggunakan jadual berasingan bernama SQLITE_SEQUENCE
untuk menjejaki nilai ROWID tertinggi dalam setiap jadual. Apabila rekod baharu dimasukkan, algoritma AUTOINCREMENT menyemak jadual SQLITE_SEQUENCE
untuk menentukan nilai kunci utama yang tersedia seterusnya.
Memadam data daripada jadual utama hanya akan memadamkan baris yang berkaitan. SQLITE_SEQUENCE
Jadual kekal tidak berubah, menyebabkan kaunter kenaikan automatik terus meningkat daripada nilai terakhirnya.
Penyelesaian
Untuk menetapkan semula medan kunci utama kepada nilai yang dikehendaki, laksanakan dua pernyataan berikut:
<code class="language-sql">DELETE FROM your_table; DELETE FROM sqlite_sequence WHERE name='your_table';</code>
Pernyataan pertama memadam semua data dalam jadual utama. Pernyataan kedua memadamkan masukan untuk jadual tersebut dalam jadual SQLITE_SEQUENCE
, dengan berkesan menetapkan semula nilai ROWID tertinggi kepada 0.
Nota lain
SQLITE_SEQUENCE
hendaklah dilakukan dengan berhati-hati. Atas ialah kandungan terperinci Bagaimana untuk Menetapkan Semula Kekunci Utama Auto-Incrementing dalam SQLite?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!