Habe mich nun nochmal durch die ganze Trigger-Thematik durchgearbeitet und bin wesentlich weiter gekommen. Folgende Funktion hat sich bisher ergeben:
CREATE OR REPLACE FUNCTION public.insert()
RETURNS trigger AS
$BODY$
BEGIN
IF (TG_OP = 'DELETE') THEN
DELETE FROM postgis.stammdaten WHERE locid = OLD.locid and xcoord = OLD.xcoord and ycoord = OLD.ycoord;
RETURN OLD;
ELSIF (TG_OP = 'UPDATE') THEN
UPDATE postgis.stammdaten
SET locid = NEW.locid, xcoord = NEW.xcoord, ycoord = NEW.ycoord
FROM public.geodin_loc_ssgkrzt1;
RETURN NEW;
ELSIF (TG_OP = 'INSERT') THEN
INSERT INTO postgis.stammdaten SELECT NEW.locid, NEW.xcoord, NEW.ycoord;
RETURN NULL;
END IF;
RETURN NULL;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION public.insert()
OWNER TO postgres;
Der INSERT und DELETE Teil funktioniert einwandfrei. Der UPDATE-Teil funktioniert leider noch nicht wie gewünscht.
Im Moment passiert folgendes: ich ändere den wert einer Zeile in der Spalte locid per update in der urtabelle (public.geodin_loc_ssgkrzt1).
Daraufhin ändert mir der Trigger alle Werte in allen Zeilen und SPalten in der Zieltabelle auf die Werte der betreffenden Zeile aus der Urtabelle. Irgendwie auch logisch bei dem was ich da geschrieben habe.
Ich tu mich sowieso mit der UPDATE-Funktion etwas schwer und wäre über einen ANstoß was ich ändern muss, damit nur der eine entsprechende Wert in der Zieltabele geupdatet wird, sehr dankbar. Wenn ich das habe, habe ich das gesamte Problem gelöst.