sql >> Databasteknik >  >> RDS >> Oracle

Hur utökar man Liquibase för att generera ändringsloggar med lagrade procedurer, funktioner och triggers?

Du har rätt i att den allmänna strategin är att skapa en ny klass som implementerar SnapshotGenerator, men det finns ett par andra steg du måste göra också. Den allmänna ögonblicksbildsprocessen är:

  1. Liquibase söker efter SnapshotGenerator-implementeringar och anropar addsTo() för varje objekt som den hittar i databasen. För dina typer vill du förmodligen ha en snabb "om passerat objektinstans av Schema" eftersom de är typer som ingår i ett schema.
  2. Du måste skapa nya paket, StoredProcedure, etc-objekt som implementerar DatabaseObject. De kommer att vara lik ehte liquibase.structure.core.Table-klass och fånga objektets tillstånd. De skapas i din SnapshotGenerator.addsTo()-metod till den grad att de är identifierbara (namn, schema, etc set)
  3. Alla objekt som läggs till med addsTo()-metoden körs sedan genom din SnapshotGenerator.snapshotObject()-metod som kommer att hämta ytterligare metadata som du inte fick ursprungligen, såsom lagrad procedurtext, etc.
  4. När liquibase har en ögonblicksbild som innehåller dina objekt jämför den ögonblicksbilden med en annan (i genereraChangeLog-fallet en tom ögonblicksbild) för att avgöra vilka objekt som saknas, oväntade och ändras i den andra ögonblicksbilden. Den letar sedan efter implementeringar av MissingObjectChangeGenerator, UnexpectedObjectChangeGenerator och ChangedObjectChangeGenerator. För generChangeLog kommer det bara att finnas "saknade" objekt så du skulle implementera MissingTriggerChangeGenerator, MissingPackagedChangeGenerator etc. Deras jobb är att skapa Change-instanser för att skapa de saknade objekten
  5. Msising*ChangeGenerator-klasserna kan returnera RawSqlChange-instanser eller så kan du skapa nya implementeringar av Change som CreateTriggerChange.



  1. Overheaden för #temp tabellskapande spårning

  2. Tips för bättre databasdesign

  3. hur uppdaterar man flera tabeller i Oracle DB?

  4. Doktrin anpassad datatyp