PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Metode untuk menghapus penghapusan lunak dalam hubungan orang tua-anak

Sebenarnya, satu-satunya cara untuk mengalirkan nilai seperti itu adalah dengan menggunakan ON UPDATE CASCADE. Untuk melakukan itu , kolom "is_deleted" harus menjadi bagian dari batasan unik.

Itu saja tidak terlalu sulit. Jika company.id adalah kunci utama Anda, maka pasangan kolom {id, is_deleted} juga akan unik. Batasan unik pada pasangan kolom tersebut akan memungkinkan Anda untuk melakukan kaskade pembaruan melalui referensi kunci asing.

Tapi itu tidak akan berhasil di Anda kasus, karena Anda harus mengizinkan nilai referensi menjadi berbeda dari nilai yang direferensikan.

Jadi dalam kasus Anda, saya pikir Anda memiliki tiga opsi.

  • Pemicu
  • Prosedur tersimpan
  • Kode aplikasi

Dalam semua kasus tersebut, Anda perlu memperhatikan izin (mungkin mencabut izin penghapusan) dan kasus yang dapat menghindari kode Anda. Misalnya, antarmuka baris perintah dbms dan antarmuka GUI dapat digunakan untuk mengatasi kendala dalam kode aplikasi dan, tergantung pada izin, dalam prosedur tersimpan.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara yang tepat untuk menambahkan teks yang tidak lolos dari bidang ke regex di postgres?

  2. Bagaimana saya bisa mendefinisikan batasan ini?

  3. Cara Menutup Celah Kerentanan di PostgreSQL

  4. cara memilih semua catatan yang berisi nilai-nilai tertentu dari bidang json postgres berisi array

  5. initdb:menginisialisasi pg_authid ... FATAL:jumlah ekspresi indeks yang salah