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

Làm thế nào để viết một quy tắc xóa trên một dạng xem?

Những gì bạn đang thấy với vấn đề quy tắc là hệ thống quy tắc không xử lý dữ liệu một cách nguyên tử. Lần xóa đầu tiên được thực hiện bất kể thứ tự của hai câu lệnh trong quy tắc DO INSTEAD. Câu lệnh thứ hai không bao giờ được thực thi, vì hàng mà OLD.id tham chiếu đến đã bị xóa khỏi dạng xem. Bạn có thể sử dụng THAM GIA TRÁI, nhưng điều đó sẽ không giúp được bạn vì thiết kế bảng mẫu (nó có thể hoạt động trên lược đồ cơ sở dữ liệu thực tế của bạn).

Theo tôi thấy, vấn đề cơ bản là bạn đang đối xử với hệ thống quy tắc như một trình kích hoạt.

Lựa chọn tốt nhất của bạn là sử dụng khóa ngoại và ON DELETE CASCADE thay vì các quy tắc. Với chúng, lược đồ mẫu của bạn cũng sẽ hoạt động:Bạn chỉ cần xóa đối với bảng mẹ để loại bỏ tất cả các bảng con.



  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 thế nào để chuyển đổi số nguyên thành nối tiếp

  2. pgDash Alternatives - Giám sát cơ sở dữ liệu PostgreSQL với ClusterControl

  3. findById () cung cấp Không tìm thấy Id thuộc tính

  4. Trạng thái SQL:lỗi cú pháp 42601 tại hoặc gần 11

  5. Rails:Không có nhóm kết nối cho ActiveRecord ::Base