Transactions, Commit, Rollback...

jazy jaf

Grünschnabel
Hallo,

ich benutze MS SQL Server 2005 und habe eine Frage bzgl. Transaktionen.
Zunächst das Szenario:

Alle DB-Zugriffe erfolgen mittels Web Service.
Über entsprechende Methoden führe ich INSERT/UPDATE/DELETE etc aus - der Service wiederum wird über C#.NET gesteuert.

Nun zum Problem:
Ich habe eine Tabelle X und in diese Tabelle füge ich per Web Service N Datensätze ein...kein Problem.
Damit Datensätze nicht doppelt vorkommen (lassen wir PRIMARY und UNIQUE Constraints mal außer acht), mache ich vor jeder Einfügeprozedur in der n mal INSERT-Statements ausgeführt werden folgendes: Ich lösche zunächst alle vorhanden Datensätze bevor ich die neuen Einfüge.
Hier wäre jetzt ein Sicherheitsmechanismus wichtig, damit, falls es beim Einfügen zu Fehlern kommt, die Daten nicht vollständig oder teilweise futsch sind - Transactions ist hier wohl das Zauberwort.

Das Problem ist aber:
Das DELETE soll ja nur einmal am anfang ausgeführt werden, das INSERT allerdings n-mal.
Wenn ich eine Methode schreibe, in der das DELETE und das INSERT innerhalb einer Transaktion auftauchen, so wird auch das DELETE n-mal ausgeführt und jeder vorher eingefügte Datensatz wieder gelöscht.
Wie geh ich hier am besten vor?

Ich hab auch schon mit einem Flag versucht, dass ich das Flag am anfang auf 0 habe und dann inkrementiere und das DELETE nur ausgeführt wird, wenn das Flag auf 0 ist...hat aber nicht geklappt...

Weiß jemand eine Lösung?

Ich möchte am Ende nicht zur uneffizienten Methode greifen müssen, zuerst alle Daten die ich lösche, in eine andere Tabelle als backup zu kopieren.

Gruß,
jaf
 
Zurück