Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Modelowanie relacji jeden do stałej

Robienie tego tak, aby było prawidłowe i prawidłowe, nawet gdy wiele sesji wykonuje aktualizacje, nie jest łatwe. Wpakujesz się w bałagan, jeśli spróbujesz tego z wyzwalaczami, a deklaratywne ograniczenia Oracle nie są wystarczająco silne, aby to wyrazić.

Można to zrobić w następujący sposób:-

  1. Utwórz dziennik widoku zmaterializowanego zarówno w tabeli nadrzędnej, jak i podrzędnej
  2. Utwórz widok złączenia zmaterializowanego, który łączy je ze sobą i zlicza liczbę dzieci pogrupowanych według rodzica. To musi być SZYBKIE ODŚWIEŻANIE PO ZAKOŃCZENIU
  3. Nałóż ograniczenie na widok zmaterializowanego łączenia, że ​​liczba rekordów podrzędnych musi być równa „n” (stała Twojej bazy danych)

Następnie możesz wykonać serię instrukcji wstawiania/aktualizowania/usuwania. Po zatwierdzeniu widok zmaterializowany zostanie odświeżony, a jeśli warunek nie zostanie spełniony, w tym momencie pojawi się błąd naruszenia ograniczenia.

Dodatkowym trikiem jest uwzględnienie w zmaterializowanym widoku tylko wierszy, które nie spełniają ograniczenia (HAVING count(ChildId) <> 5), aby nie marnować miejsca.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Indeks na widoku (Oracle)

  2. Wybór CLOB w Oracle przy użyciu C i wbudowanego SQL

  3. Błąd Oracle 11.1.0.7 i WAMP oci_connect

  4. Zagnieżdżone podzapytanie SQL Odwołujące się do kolumny dziadków

  5. Nowy błąd w wiosennym rozruchu 2.3.0.RELEASE:UnsatisfiedDependencyException dla Oracle 12.2.0.1 jdbcdriver, ale nie z mysql jdbcdriver