Saya punya tabel dengan kolom IDENTITAS. Saat mengembangkan saya menghapus baris dari waktu ke waktu dan menambahkannya lagi. Tetapi nilai IDENTITAS selalu terus meningkat dan tidak dimulai dari 1 ketika saya menambahkannya lagi. Sekarang id saya mulai dari 68 -> 92 dan ini crash kode saya.
Bagaimana cara mereset nilai IDENTITAS?
Jawaban:
Anda dapat mengatur ulang nilai identitas dengan
Jadi lain kali Anda memasukkan ke TableName, nilai identitas yang dimasukkan akan 1.
Saat Anda menghapus baris dari tabel, itu tidak akan mereset nilai Identity, tetapi akan terus meningkatkannya. Sama seperti apa yang terjadi dalam kasus Anda.
Sekarang ketika Anda memotong tabel, itu akan mereset nilai Identity ke nilai Seed aslinya dari tabel.
Lihat: SQL SERVER - DELETE, TRUNCATE dan RESEED Identity untuk contoh terperinci dan beberapa penjelasan yang baik tentang Perbedaan antara Truncate dan Delete
sumber
Kin telah menunjukkan kepada Anda bagaimana Anda dapat mereset nilai IDENTITAS, tetapi di luar lingkungan pengembangan ketika Anda benar-benar menghapus semua data, mengapa Anda perlu melakukan ini?
Saya harap Anda tidak berniat untuk mempertahankan urutan nilai IDENTITAS yang berdekatan saat Anda berada di produksi. Dan saya harap Anda tidak benar-benar menulis kode Anda ke hard-code nilai IDENTITAS. Jika ini adalah nilai ID yang berarti maka Anda harus berhenti menggunakan properti IDENTITY.
Ada beberapa hal yang akan mencegah hal ini terjadi:
tidak akan diperbaiki sampai SQL Server 2014tidak akan pernah diperbaiki (kecuali jika Anda menggunakan tanda bendera tidak berdokumen dan sangat mahal) di mana restart tampaknya akan membuang hingga 1000 nilai dari kolom IDENTITY Anda . Bug di Connect menunjukkan bahwa ini terbatas pada peristiwa failover yang melibatkan Grup yang Tersedia tetapi saya dapat meyakinkan Anda bahwa bug tersebut jauh lebih luas dari itu.Singkatnya, jika Anda peduli tentang kesenjangan atau ingin memberikan nilai-nilai ini makna khusus, berhenti menggunakan IDENTITAS. Jatuhkan dan buat kembali tabel dan ketika Anda perlu menghapus nilai-nilai dan mengisi kembali, baik melakukan pembaruan, atau melakukan sisipan dengan nilai-nilai hard-kode untuk kolom itu.
Selain itu, kunci utama dan identitas bukanlah hal yang sama. Kolom identitas bukan kunci utama kecuali jika Anda secara eksplisit mendefinisikannya, dan Anda tentu dapat memiliki kunci primer yang bukan kolom identitas.
sumber
Jika Anda hanya perlu menghilangkan baris terakhir yang belum mengikuti nilai tambahan bidang identitas, ada cara yang mudah dan aman:
dan kamu selesai.
sumber