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

Metoda kaskadowania miękkich usunięć w relacjach rodzic-dziecko

Ściśle mówiąc, jedynym sposobem na kaskadowanie wartości jest użycie opcji ON UPDATE CASCADE. Aby to zrobić to , kolumna „is_deleted” musi być częścią unikatowego ograniczenia.

Samo to nie jest zbyt trudne. Jeśli company.id jest Twoim kluczem podstawowym, para kolumn {id, is_deleted} również będzie unikalna. Unikalne ograniczenie dla tej pary kolumn pozwoliłoby na kaskadowe aktualizacje poprzez odwołanie do klucza obcego.

Ale to nie zadziała w Twoim przypadku, ponieważ musisz zezwolić na wartości odniesienia różne z wartości odniesienia.

Więc w twoim przypadku myślę, że masz trzy opcje.

  • Wyzwalacze
  • Procedury przechowywane
  • Kod aplikacji

We wszystkich tych przypadkach należy zwrócić uwagę na uprawnienia (prawdopodobnie odwołanie uprawnień do usuwania) oraz na przypadki, w których można uniknąć kodu. Na przykład interfejs wiersza poleceń dbms i interfejs GUI można wykorzystać do obejścia ograniczeń w kodzie aplikacji i, w zależności od uprawnień, w procedurach składowanych.




  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 skonfigurować replikację klastrów do klastrów dla PostgreSQL

  2. psycopg2.OperationalError:FATAL:nieobsługiwany protokół frontendu 1234.5679:serwer obsługuje 2.0 do 3.0

  3. Wybierz zapytanie z limitem przesunięcia jest zbyt wolne

  4. Jak zabezpieczyć bazę danych PostgreSQL — 10 wskazówek

  5. PostgreSQL last_value ignoruje wartości null