PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak napisać regułę usuwania na widoku?

To, co widzisz w przypadku problemu z regułą, polega na tym, że system reguł nie obsługuje danych w sposób atomowy. Pierwsze usunięcie jest wykonywane niezależnie od kolejności dwóch instrukcji w regule DO INSTEAD. Druga instrukcja nigdy nie jest wykonywana, ponieważ wiersz, do którego odnosi się OLD.id, został usunięty z widoku. Możesz użyć LEFT JOIN, ale to ci nie pomoże ze względu na przykładowy projekt tabeli (może działać na twoim rzeczywistym schemacie bazy danych).

Podstawowym problemem, jak ja to widzę, jest to, że traktujesz system reguł jako wyzwalacz.

Najlepszym rozwiązaniem jest użycie kluczy obcych i ON DELETE CASCADE zamiast zasad. Z nimi twój przykładowy schemat również zadziała:wystarczy usunąć tabelę nadrzędną, aby pozbyć się wszystkich dzieci.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak podłączyć aplikację C# Windows mobile 6.5 do bazy danych Postgres?

  2. Problemy z nieskończonym zakresem czasu w Railsach

  3. Nie można połączyć się z bazą danych Postgresql w ramach Play

  4. Data PostgreSQL C# DateTime

  5. Bardzo powolne uruchamianie aplikacji Spring Boot