Announcement

Collapse
No announcement yet.

Von anderen gelöschte Datensätze ermitteln

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Von anderen gelöschte Datensätze ermitteln

    Hallo,

    Ich arbeite an einem Multiuser-Datenbankprogramm. In meiner Datenbank hat jede Tabelle ein Timestamp Feld. Um immer die aktuellen Daten im Dataset zu haben, führe ich nach jeder Verbindung zur Datenbank folgende Prozedur durch:

    Dim cmdsel As New MySqlCommand
    Dim dtsel As New DataTable
    dtsel.TableName = "Temp"
    cmdsel.CommandText = "Select * from " & _tabname & " where timestamp>'" & mytabelle.Compute("Max(timestamp)", "") & "'"
    cmdsel.Connection = myconn
    myconn.Open()
    da.Fill(dtsel)
    mytabelle.Merge(dtsel)

    dadurch werden immmer alle von aneren Benutzern neu hinzugefügten oder geänderten Datensätze geladen, und in der Tabelle (mytabelle) aktualisiert. Was aber macht man mit Datensätzen, die von anderen gelöscht wurden? Die müssten eigentlich bei diesem Schritt auch aus mytabelle gelöscht werden um wieder eine 100% Abbildung der in der Datenbank vorhandenen DAten zu haben. Hat jemand eine Idee wie man von anderen in der Datenbank gelöschte Datensätze ermitteln kann?

    Vielen Dank
    Daniel

  • #2
    Je nach DBMS bietet die Datenbank Eventmechanismen an oder man zentriert alle DB-Zugriffe in einer Mittel-Tier-Schicht und diese sorgt für die verteilung der Aktualisierungen.

    Comment


    • #3
      Hallo,

      Hat jemand eine Idee wie man von anderen in der Datenbank gelöschte Datensätze ermitteln kann?
      es gibt verschiedene Lösungsmöglichkeiten:
      1. Wenn es eine MS SQL Server 2005-Datenbank ist, steht die SqlDependency-Klasse als Kapselung der Query Notification vom MS SQL Server 2005 zur Verfügung. Das Ereignis OnChange wird von einem SqlDependency-Thread immer dann ausgelöst, wenn nach dem Aktivieren der Query Notification die von der SELECT-Abfrage betroffene Datenmenge geändert wird.
      2. Der Client nutzt den Automatismus des Datenabgleichs der Microsoft Synchronization Services for ADO.NET, d.h. der Client puffert die Daten in einer eigenen MS SQL Server 2005 Compact Edition-Datenbank. Sowohl die Datenbank-Bestandteile als auch die Client-Implementierung wird vom Wizard aus Visual Studio 2008 generiert, wobei man zwischen dem Client/Server- und dem Three-Tier-Modus auswählen kann.
      3. Wenn als Datenbank nicht der MS SQL Server eingesetzt wird, muss die Datenbank über einen Trigger eine eigene Tombstone-Tabelle mit den Primärschlüsselwerten der gelöschten Datensätze füllen. Der Client muss diese Hilfstabelle auslesen, um die gelöschten Datensätze auch in seiner eigenen Kopie entfernen zu können.

      Comment


      • #4
        Hallo Andreas,

        das Zauberwort war Trigger, und ich habs in der MySQL Dokumentation schon gefunden, und werde damit klar kommen denke ich.

        Vielen Dank für die schnelle Hilfe

        Gruß
        daniel

        Comment

        Working...
        X