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

Jak rozszerzyć Liquibase o generowanie dzienników zmian z procedurami składowanymi, funkcjami i wyzwalaczami?

Masz rację, że ogólną strategią jest utworzenie nowej klasy, która implementuje SnapshotGenerator, ale musisz również wykonać kilka innych kroków. Ogólny proces tworzenia migawki to:

  1. Liquibase wyszukuje implementacje SnapshotGenerator i wywołuje addsTo() dla każdego obiektu, który znajdzie w bazie danych. W przypadku swoich typów prawdopodobnie potrzebujesz szybkiego "jeśli przekazane wystąpienie obiektu schematu", ponieważ są to typy, które są częścią schematu.
  2. Będziesz musiał utworzyć nowe obiekty Package, StoredProcedure itp., które implementują DatabaseObject. Będą one jak klasa ehte liquibase.structure.core.Table i przechwytują stan obiektu. Są one tworzone w Twojej metodzie SnapshotGenerator.addsTo() w taki sposób, aby były możliwe do zidentyfikowania (nazwa, schemat itp. zestaw)
  3. Wszystkie obiekty dodane przez metodę addsTo() są następnie uruchamiane przez metodę SnapshotGenerator.snapshotObject(), która pobiera wszelkie dodatkowe metadane, których nie otrzymałeś pierwotnie, takie jak tekst procedury składowanej itp.
  4. Gdy liquibase ma migawkę zawierającą Twoje obiekty, porównuje ją z inną (w przypadku generateChangeLog pustą migawkę), aby określić, których obiektów brakuje, które są nieoczekiwane i zmienione w drugim migawce. Następnie szuka implementacji MissingObjectChangeGenerator, UnexpectedObjectChangeGenerator i ChangedObjectChangeGenerator. W przypadku generateChangeLog będą tylko „brakujące” obiekty, więc możesz zaimplementować MissingTriggerChangeGenerator, MissingPackagedChangeGenerator itp. Ich zadaniem jest tworzenie instancji Change w celu utworzenia brakujących obiektów
  5. Klasy Msising*ChangeGenerator mogą zwracać instancje RawSqlChange lub możesz tworzyć nowe implementacje Change, takie jak CreateTriggerChange.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Definiowanie zestawu znaków dla kolumny Dla tabel bazy danych Oracle

  2. TEMPFILE Tryb gotowości fizycznej offline

  3. Wygeneruj losową datę w Oracle za pomocą DBMS_RANDOM

  4. ORACLE SQL | Modyfikacja danych w ORDER BY

  5. UTWÓRZ TABELĘ WEWNĄTRZ PROCEDURY