Announcement

Collapse
No announcement yet.

UpdateBatch und Unique Index

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

  • UpdateBatch und Unique Index

    Folgendes Szenario: ich lade im Modus ltBatchOptimistic eine Tabelle mit Positionen, die anhand einer PosNr, auf der ein Unique Index liegt, sortiert werden. Sortiere ich diese Positionen jetzt um - vertausche also bspw zwei PosNr - und rufe dann UpdateBatch auf, setzt es natürlich schon beim ersten Update-Statement eine Schlüsselverletzung (weil zB PosNr 4 zu PosNr 3 geändert werden soll, während die ursprüngliche PosNr 3 noch unverändert in der DB steht).

    Wie geht ihr mit diesem Problem um?

    (Diese Frage habe ich auch hier:
    http://www.delphipraxis.net/topic93275_updatebatch+und+unique+index.html
    gestellt)

  • #2
    Hallo!

    Also wir haben das Problem nicht. Die Änderung von Unique Feldern ist tabu. Reihenfolgen werden immer über nicht unique Felder realisiert, die dann lokal (am Client) überprüft werden...

    Das Problem kommt daher, dass Deine Änderungen hübsch eine nach der anderen in die Datenbank eingetragen werden "update mytab set myfield = mywert where etc..."

    Vieleicht so?
    Feststellen, ob die Reihenfolge geändert wurde
    wenn nein einfach ein updatebatch und fertig
    wenn ja die Datensätze auf dem Server löschen. Lokal eine neue und leere Tabelle(dummy) mit den Daten aus Deinem Recordset erzeugen und in diese die Daten eintragen. Jetzt kannst Du auf dummy ein UpdateBatch durchführen und es werden nur Insert statt Update Statements erzeugt. Da Du die Daten vorher gelöscht hast sollte das jetzt klappen...

    BYE BERN

    Comment


    • #3
      Hallo Bernd,

      danke für die Antwort. Momentan neige ich auch dazu, den Unique zu verwerfen. Die Idee mit der Dummy-Tabelle zum Erzeugen von Insert-Statements ist aber auch 'nett', das erspart es einem, für den Fall des Beibehaltens den ganzen Kladderadatsch 'zu Fuß' zu erledigen.

      Gruß, Reinhar

      Comment

      Working...
      X