Hallo,
ich habe eine Frage:
Ich möchte in eine leere SQL-Tabelle
Sätze aus einer bestehenden SQL-Tabelle kopieren
und dabei bestimmte Sätze aus-filtern.
In der Quell-Tabelle (Messwerte zu einer Auftrags-Nr.)
ist notwendigerweise das Feld Datum ein Key-Feld.
Das liegt daran, dass es vorkommen kann, dass zu einer
Auftrags-Nr. eine Mess-Reihe mehrfach ausgeführt wird.
Es SOLLEN dann auch wirklich ALLE Mess-Reihen GESPEICHERT WERDEN (also : 1-n zu einer Auftrags-Nr.)
Durch Bediener-Fehler am Erfassungs-Terminal
( bzw. mangelhafte Qualität der Erfassungs-Software
an der messenden Maschine )
wurden nun jedoch hunderte Sätze doppelt erfasst ...
( z.B.: 2x ENTER für drucken+speichern gedrückt, und schon gibt es zwei identische Mess-Wert-Datensätze,
die sich ja aber in der Uhrzeit (Datum) unterscheiden,
beim Import ist das also jeweils ein NEUER SATZ. )
Meine Idee war, in einer (neu angelegten) Ziel-Tabelle das Feld Datum NICHT als Teil des Keys zu benutzen, sondern
eine Kombination hinreichend vieler anderer Felder,
die sicher stellen, daß es sich
bei kompletter Übereinstimmung dieser Felder
um ein und dieselbe Messreihe handeln muss.
(Einstellung Adapter = INSERT + vorhandene ignorieren)
So funktioniert es aber leider nicht.
Offensichtlich wird nur Satz für Satz kontrolliert,
ob der jeweils aktuell zu importierende Satz
VOR DEM IMPORT bereits in der Tabelle vorhanden war,
und nicht, ob dieser Satz
im Rahmen des LAUFENDEN Imports bereits eingefügt wurde.
Das heisst: Auch wenn alle Key-Felder aus Satz 2
mit denen von Satz 1 identisch sind,
wird Satz 2 nicht ignoriert, sondern eingefügt.
Also lautet meine Frage:
Wie kann ich mir einen Filter definieren,
der den LAUFENDEN INSERT checkt ?
Geht das überhaupt ?
Es müsste ja bei jedem einzufügenden Satz
der komplette Clustered-Key (8 Felder)
abgeglichen werden ...
und das mit allen den Sätzen,
die bereits zum INSERT freigegeben sind ...
aber wenn das ginge ... wäre schon toll ...
Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!