Bạn có biết "xóa mềm" có nghĩa là gì không? Có nghĩa là mọi thao tác "xóa" sẽ được chuyển đổi thành SQL chỉ đặt một số deleted
gắn cờ thành true
. Và nếu bạn chèn một hàng khác có cùng giá trị của trường duy nhất có hàng đã xóa mềm, bạn sẽ nhận được thông báo này.
Bạn có hai cách để giải quyết vấn đề này:
- Tạo chỉ mục duy nhất của bạn với hai cột:trường duy nhất ban đầu của bạn và
deleted
lá cờ. Sau đó, bạn sẽ chỉ gặp lỗi này khi cố gắng thêm hàng với các giá trị trường duy nhất hiện có chỉ để không bị xóa mềm. - Tránh vi phạm điều này:bạn nên loại trừ khả năng thêm hàng trùng lặp với hàng khác trong các trường duy nhất.
Cách thứ hai là cách tiếp cận tốt nhất IMHO.