Oracle
 sql >> база данни >  >> RDS >> Oracle

Моделиране на връзката "един към константа".

Не е лесно да направите това, така че да е добро и правилно, дори когато множество сесии извършват актуализации. Ще се забъркате в каша, ако опитате това с тригери, а декларативните ограничения на Oracle не са достатъчно мощни, за да изразят това.

Може да се направи по следния начин:-

  1. Създаване на материализиран журнал на изглед както на родителската, така и на дъщерната таблица
  2. Създайте материализиран изглед за присъединяване, който ги обединява и отчита броя на децата, групирани от родителя. Това трябва да е ОБНОВЯВАНЕ БЪРЗО ПРИ КОМИТ
  3. Поставете ограничение на изгледа на материализирано свързване, че броят на дъщерните записи трябва да е равен на "n" (константата на вашата база данни)

След това можете да направите поредица от изрази за вмъкване/актуализиране/изтриване. Когато извършите ангажимент, материализираният изглед ще се обнови и ако условието не е изпълнено, в този момент ще получите грешка при нарушение на ограничението.

Допълнителен трик е да включите само редове, които не отговарят на ограничението, в материализирания изглед (HAVING count(ChildId) <> 5), така че да не губите място за съхранение.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да преобразуваме числото в думи - ORACLE

  2. Как присвоявате резултата от израз на SQL заместваща променлива?

  3. Как да изброите всички съхранени процедури в базата данни на Oracle

  4. SQLException:Нарушение на протокола в Oracle

  5. Изходен код на съществуващия обект в Oracle