# Datenbanken abgleichen



## Guest (20. Jan 2009)

Hallo Leute, ich habe ein kleines Problem mit einem "Datenbankabgleich"

Ich habe 2 verschiedene Datenbanken. Die eine Datenbank läuft "live" bedeutet, wird von einem System geändert.

Die 2. Datenbank protokolliert alle 24 Stunden alle änderungen der "LiveDB", also der 1. DB.

Das herausfinden ob daten hinzugefügt oder geändert wurden ist kein problem, da ich einen Last_Change Spalte habe. Doch was mache ich wenn daten gelöscht wurden?

Grundlegend bekomme ich über COUNT heraus ob sich die Anzahl der Daten geändert hat. Wenn COUNT die gleichen werte liefert ist klar, dass nichts gelöscht wurde. Wenn count keine gleiche Zahl bietet ist klar, dass etwas gelöscht wurde.

Doch wie bekomme ich nun elegant heraus welcher Datensatz gelöscht wurde.

Momentan laufe ich einfach über alle einträge, die ich in meiner parallel DB habe und prüfe ob die Daten in der "live" db noch vorhanden sind. Das ganze finde ich aber nicht wirklich so elegant, denn bei einer großen Menge an Daten das ganze schön an die performace geht, da ich ja immer einen neuen query mache.

Jmd. eine Idee wie ich das schön elegant lösen kann?

Im grunde habe ich 2 Tabellen die zum Zeitpunkt 0 identisch sind. Nun will ich 24h später herausfinden ob und wo es änderungen zwischen tabelle 1 und Tabelle 2 gibt. Dabei bleibt 2 gleich und nur 1 ändert sich.

Hoffe auf gute Idee.

Ich hoffe auch ich habe das so beschrieben, dass ihr das auch versteht. wenn nicht, dann grad nochmal kurz nachfragen.

Vielen Dank schonmal, dass ihr euch das durchgelesen habt, ich hoffe ihr wisst dazu auch eine Antwort.

Gruß

User


----------



## mvitz (20. Jan 2009)

Anonymous hat gesagt.:
			
		

> Grundlegend bekomme ich über COUNT heraus ob sich die Anzahl der Daten geändert hat. Wenn COUNT die gleichen werte liefert ist klar, dass nichts gelöscht wurde. Wenn count keine gleiche Zahl bietet ist klar, dass etwas gelöscht wurde.



Ich kann dir zwar keinen Tipp zur Lösung deines Problemes geben. Aber du solltest auch darauf achten, dass z.B. in einer Tabelle zwei Spalten gelöscht und zwei hinzugefügt werden können und dann der COUNT identisch ist.


----------



## Guest (20. Jan 2009)

Hi,

stimmt.

Jedoch ist das nicht möglich. Es werden vom System nur Datensätze entfern, also nur Zeilen, keine Spalten.

Aber danke schonmal.


----------



## Guest (20. Jan 2009)

Ahh, nun weiß ich was du willst. Sry grad verlesen. Ja klar, das fange ich ab indem ich beim COUNT alle eintrage die erst nach der letzen Änderung hinzugefügt wurden ausblenden lasse.

Über diesen Umstand habe ich mir bereits gedanken gemacht. Hier hilft mir das Feld Create_Date. Darüber kann ich die Datensätze beim COUNT ausblenden.


----------



## HoaX (20. Jan 2009)

mach einfach nen trigger der die löschaktionen in eine extra tabelle protokolliert.

zu count: wenn du einen datensatz löscht und einen neuen anlegst, dann bekommst du das damit nicht mit


----------

