Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

cách thực thi ràng buộc tính duy nhất có điều kiện

Xác định ràng buộc duy nhất của bạn trên một trường khác:deleted và các trường giả độc đáo của bạn. Sau đó, để đại diện cho phép xóa mềm, hãy chỉ định id của mô hình cho deleted; đối với các mục chưa xóa, chỉ định 0.

Với cách tiếp cận này, đối với các mục chưa xóa, vì deleted trường được định giá nhất quán, ràng buộc duy nhất của nhiều trường sẽ bỏ qua giá trị của deleted một cách hiệu quả và thực thi tính duy nhất cho các trường giả duy nhất; đối với các mục đã xóa, deleted sẽ được tính đến và vì nó là duy nhất, ràng buộc sẽ luôn được thỏa mãn - vì vậy bất kỳ số lượng mô hình nào có cùng giá trị của các trường giả duy nhất đều có thể cùng tồn tại.

Ví dụ:mã sau có thể là những gì bạn đang tìm kiếm.

class Deletable(models.Model):
    deleted = models.IntegerField(default=0)

    class Meta:
       abstract=True

    def soft_delete(self):
       self.deleted=self.id
       self.save()

class ConcreteModel(Deletable):
    a = models.IntegerField()
    b = models.IntegerField()

    class Meta:
       unique_together=('a', 'b', 'deleted')


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi khi sao lưu với mysqldump trong dòng lệnh mysql

  2. Làm thế nào để tìm kiếm nhiều cột với mức độ ưu tiên trong MySQL?

  3. Tải văn bản vào textarea thông qua lệnh gọi ajax

  4. Tải dữ liệu trong tệp MySQL bằng URL tuyệt đối

  5. Kết quả kỳ lạ sử dụng thứ tự theo và giới hạn