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

Bagaimana cara menulis aturan penghapusan pada tampilan?

Apa yang Anda lihat dengan masalah aturan adalah bahwa sistem aturan tidak menangani data secara atom. Penghapusan pertama dijalankan terlepas dari urutan dua pernyataan dalam aturan DO INSTEAD. Pernyataan kedua tidak pernah dieksekusi, karena baris yang dirujuk OLD.id telah dihapus dari tampilan. Anda bisa menggunakan LEFT JOIN, tetapi itu tidak akan membantu Anda karena contoh desain tabel (mungkin bekerja pada skema database Anda yang sebenarnya).

Masalah mendasar, seperti yang saya lihat, adalah Anda memperlakukan sistem aturan sebagai pemicu.

Pilihan terbaik Anda adalah menggunakan kunci asing dan ON DELETE CASCADE bukannya aturan. Dengan mereka, skema contoh Anda juga akan berfungsi:Anda hanya perlu menghapus untuk tabel induk untuk menyingkirkan semua anak.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ALL operator dalam klausa WHERE di Rails

  2. Masalah dengan accept_nested_attributes_for di Rails 5.0.0.beta3, opsi -api

  3. breakpoints di Eclipse menggunakan postgresql

  4. Perbaiki “ERROR:  setiap kueri UNION harus memiliki jumlah kolom yang sama” di PostgreSQL

  5. Ulangi tabel dengan PL/pgSQL di Postgres 9.0+