Apakah Anda tahu apa artinya "penghapusan lunak"? Ini berarti bahwa setiap operasi "hapus" akan dikonversi ke SQL yang hanya mengatur beberapa deleted
tandai ke true
. Dan jika Anda akan menyisipkan baris lain dengan nilai bidang unik yang sama dengan baris yang dihapus, Anda akan mendapatkan pesan ini.
Anda memiliki dua cara untuk menyelesaikan masalah ini:
- Buat indeks unik Anda dengan dua kolom:bidang unik asli Anda dan
deleted
bendera. Kemudian Anda akan mendapatkan kesalahan ini hanya ketika Anda mencoba menambahkan baris dengan nilai bidang unik yang ada hanya untuk tidak dihapus sementara. - Hindari membuat pelanggaran ini:Anda harus mengecualikan kemungkinan untuk menambahkan baris yang menduplikasi baris lain di bidang unik.
Yang kedua adalah pendekatan IMHO terbaik.