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

Phương pháp xếp tầng xóa mềm trong mối quan hệ cha-con

Nói một cách chính xác, cách duy nhất để phân tầng các giá trị như vậy là sử dụng BẬT CẬP NHẬT CASCADE. Để làm điều đó , cột "is_deleted" phải là một phần của một ràng buộc duy nhất.

Điều đó một mình không quá khó. Nếu company.id là khóa chính của bạn, thì cặp cột {id, is_deleted} cũng sẽ là duy nhất. Một ràng buộc duy nhất trên cặp cột đó sẽ cho phép bạn xếp tầng các bản cập nhật thông qua tham chiếu khóa ngoại.

Nhưng điều đó sẽ không hoạt động trong của bạn vì bạn cần cho phép các giá trị tham chiếu khác nhau từ các giá trị được tham chiếu.

Vì vậy, trong trường hợp của bạn, tôi nghĩ bạn có ba lựa chọn.

  • Trình kích hoạt
  • Các thủ tục được lưu trữ
  • Mã ứng dụng

Trong tất cả các trường hợp đó, bạn cần chú ý đến các quyền (có thể thu hồi quyền xóa) và các trường hợp có thể tránh mã của bạn. Ví dụ:giao diện dòng lệnh dbms và giao diện GUI có thể được sử dụng để giải quyết các ràng buộc trong mã ứng dụng và, tùy thuộc vào quyền, trong các thủ tục được lưu trữ.




  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àm cách nào để tìm các bảng tham chiếu đến một hàng cụ thể thông qua khóa ngoại?

  2. Chạy tổng ... với một vòng xoắn

  3. Trong một hàm kích hoạt, cách lấy các trường nào đang được cập nhật

  4. Thiết lập Play 2.4.0 với Postgres và HikariCP dẫn đến lỗi cấu hình

  5. Cách triển khai phân phối Percona cho PostgreSQL để có tính khả dụng cao