Sudah ada banyak jawaban bagus untuk ini yang cukup banyak bermuara pada "Tergantung pada keadaan", dan saya tidak dapat menambahkan apa pun untuk itu.
Satu hal yang belum disebutkan, yang saya pikir perlu disebutkan, adalah bahwa Anda tidak boleh menggunakan kembali kunci primer yang dihasilkan oleh urutan atau sistem AUTO_INCREMENT.
Ketika Anda menghapus item yang telah diberikan kunci utama oleh sistem seperti itu, akan ada celah di kolom kunci utama, ditinggalkan oleh data yang dihapus. Ada godaan besar untuk menetapkan kembali kesenjangan tersebut ke item baru saat mereka ditambahkan, atau lebih buruk lagi, untuk mengocok data yang ada untuk memberikannya ID baru untuk menghilangkan kesenjangan, tetapi melakukan hal itu akan menimbulkan masalah yang Anda inginkan. tidak pernah harus berurusan dengan jika Anda meninggalkan kunci sendirian.
Katakanlah Anda menyimpan basis data printer untuk mengelola pemesanan ulang bahan habis pakai. Printer 13, sebuah printer laser tua, rusak melebihi perbaikan ekonomi sehingga Anda membuangnya. Sementara itu, untuk alasan yang tidak terkait, seseorang memesan printer termal baru untuk melakukan pencetakan barcode di gudang, dan printer itu tiba sebelum penggantian untuk printer 13. Administrator mencatat printer baru itu ke dalam database dan, karena 13 sekarang bebas dan Anda mendaur ulang ID, printer termal baru akan dialokasikan 13 sebagai ID-nya.
Sekarang seseorang memberi tahu Anda bahwa printer 13 hampir kehabisan tinta. Anda ingat bahwa printer 13 adalah printer laser sehingga Anda tidak perlu repot mencarinya di basis data, dan Anda memesan kartrid toner. Hanya Anda yang benar-benar perlu memesan paket tinta termal karena printer 13 bukan printer laser lagi. Ketika kartrid toner tiba, Anda tidak dapat menggunakannya karena ini adalah isi ulang tinta yang salah untuk printer, Anda tidak dapat mencetak lagi kode batang dan Anda tidak dapat mengirimkan pesanan yang menunggu untuk dikirim.
Lebih buruk lagi, apa yang terjadi jika Anda menghapus printer 13 dan mengacak semua printer yang datang untuk mengisi celah? Printer 14 (beberapa dot matrix tua jompo) menjadi printer 13, printer 15 menjadi printer 14 dan seterusnya.
Semua printer memiliki label pada mereka sehingga mereka dapat direferensikan silang dengan database, tetapi sekarang semua label sudah ketinggalan zaman. Anda harus berputar, mencari setiap printer dalam bisnis (yang bisa mencapai ratusan!) Dan memberi label baru. Itu bukan penggunaan waktu yang efektif. Dan ini juga merupakan proses yang rawan kesalahan, dan apa yang terjadi jika tidak pernah dilakukan? Seseorang memanggil untuk mengatakan printer 14 telah rusak dan perlu segera diperbaiki, sehingga Anda mencarinya dan menemukan bahwa printer 14 adalah printer inkjet di Penerimaan. Hanya karena Anda telah mengocok ID di sekitar, itu sebenarnya printer dot matrix yang perlu diperbaiki segera. Orang yang memanggil masalah dibiarkan menggantung, sementara resepsionis memiliki orang dukungan teknis yang dia tidak pernah panggil untuk memperbaiki printer yang tidak rusak.
Anda harus menganggap ID yang ditetapkan oleh sistem kenaikan otomatis sebagai permanen, tidak dapat diubah dan tidak dapat digunakan kembali, bahkan jika hal yang merujuk pada ID tidak ada lagi. Beberapa orang mengklaim bahwa mereka tidak ingin khawatir tentang kehabisan ID, tetapi bahkan dengan sistem 32 bit dan ID yang ditandatangani, masih ada sekitar 2 miliar ID yang tersedia. Jika Anda dapat membuat kolom ID tidak ditandatangani maka ini berlipat ganda menjadi 4 miliar, dan pada sistem 64 bit jumlah ID yang tersedia secara harfiah lebih besar dari jumlah bintang di langit. Anda tidak akan kehabisan ID.