xhutzelx
Goto Top

Trigger zum updaten einer Tabelle- aber wie?

Benötige Hilfe bei der Programmierung eines Triggers

Stand der Dinge, ich habe zwei Tabellen:

Tabelle_Maschine und Tabelle_Individual

In beiden Tabellen existiert ein Feld ClientID, das nur eindeutige Werte enthalten (Primary Key) und nicht Null sein darf.

Außerdem existieren in Tabelle_Maschine die Spalten Manufacturer und Serial.
In Tabelle_Individual existieren außerdem die Felder Hersteller und SerienNr.

Das Problem ist, dass die Anwendung, die diese SQL- Tabellen nutzt, Werte nur automatisch in Tabelle_Maschine schreibt, aber nicht automatisch in Tabelle_Individual.

Die Spalten von Tabelle_Maschine werden auch nicht komplett befüllt, da die Anwendung bestimmte Werte nicht ausliest und stattdessen 00000 oder gar nichts reinschreibt.

Als Ersatz werden nun Werte in Tabelle_Individual manuell eingetragen, denn das sind die Werte, für die Zeilen in Tabelle_Maschine, in denen die Nullen oder gar nichts steht.

In Tabelle_Individual sind nicht zwangsläufig genauso viele Zeilen, wie in Tabelle_Individual vorhanden. Eher weniger.

Ich hoffe, das ist nun klar. In Tabelle_Maschine kann ich nichts manuell eintragen, da nach einem Daten-Scan diese Einträge wieder überschrieben würden.

Am einfachsten wäre es nun, wenn die Tabelle_Maschine zwar noch existieren würde, aber deren Datenzeilen, die für die Felder Manufacturer und Serial UNGLEICH 00000 oder nicht leer sind, in Tabelle_Individual geschrieben würden.
Und zwar die Werte von Manufacturer in Händler und die von Serial in SerienNr.

Aber aufgepasst: Es existieren schon Datensätze in der Tabelle_Individual.

D.h., es müssen zunächst die entsprechenden Felder in Tabelle_Individual befüllt werden, die mit der ClientID der Tabelle_Machine identisch sind. Als nächstes müssen die Datensätze mit der ClientID hinzugefügt werden, für die in Tabelle_Individual noch keine ClientID existiert, und nur die oben genannten Felder, wenn diese UNGLEICH 00000 und NICHT LEER sind.

Besser wäre es gewesen, der Trigger hätte von Anfang an schon existiert, dann hätte der wohl ein AFTER INSERT, UPDATE sein können.
Oder kann ich jetzt einen erstellen, der mir sofort und auch zukünftig die Werte wie oben beschrieben rüberschreibt?

Ich hoffe, es ist irgendwie klar, was ich machen will... wäre für einen kompletten Trigger dankbar, da kein SQL-Profi.
LG

Content-ID: 67346

Url: https://administrator.de/contentid/67346

Ausgedruckt am: 22.11.2024 um 08:11 Uhr

pi314
pi314 29.08.2007 um 11:37:46 Uhr
Goto Top
Hi,

um was für ein DB handelt es sich denn?
Oracle, MySQL, ...
Desperado
Desperado 01.09.2007 um 08:17:12 Uhr
Goto Top
trigger on tbl_machine 4 update/insert

-- Update wird nur ausgeführt, wenn ID vorhanden
update tbl_individual set hersteller = b.manufacturer from tbl_individual a, inserted b
where a.clientid = b.clientid and b.manufacturer is not null and b.manufacturer <> '00000'
update tbl_individual set seriennr = b.serial from tbl_individual a, inserted b
where a.clientid = b.clientid and b.serial is not null and b.serial <> '00000'
--Insert
insert into tbl_indivdual (clientid, hersteller, seriennr) select clientid, manufacturer, serial from
inserted where manufacturer is not null and serial is not null and manufacturer <> '00000'
and serial <> '00000'
and b.clientid not in (select clientid from tbl_individual)