Hi Uwe,
also ich hab jetzt mal ewig umher probiert mit dem old und new…
Ich habe aber nix hinbekommen. Es geht immernoch darum die bestimmten Spalten aus der Urtabelle in die neue Tabelle in dem anderen Schema automatisch zu “überführen” sobald etwas an der Urtabelle geändert wird (sei es Insert, Update oder Delete).
Ich habe folgende Funktion zusammengbastelt die zumindest keine Fehlermeldung zurückgibt und einen entsprechenden Trigger der auch keine Fehlermeldung zurück gibt. Füge ich aber etwas in die Urtabelle ein bekomme ich eine Fehlermeldung:
CREATE OR REPLACE FUNCTION public.insert()
RETURNS trigger AS
$BODY$
BEGIN
if new.prj_id <> old.prj_id
or new.xcoord <> old.xcoord
or new.ycoord <> old.ycoord
or new.zcoordb <> old.zcoordb
or new.longname <> old.longname
or new.projekt <> old.projekt
then
update "kopie"."stammdaten"
set
(old.prj_id, old.xcoord, old.ycoord, old.zcoordb, old.longname, old.projekt)
= (new.prj_id, new.xcoord, new.ycoord, new.zcoordb, new.longname, new.projekt);
RETURN NULL;
END if;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION public.insert()
OWNER TO postgres;
CREATE TRIGGER replication
AFTER INSERT OR UPDATE OR DELETE
ON public.geodin_loc_ssgkrzt1
FOR EACH ROW
EXECUTE PROCEDURE insert();
insert into public.geodin_loc_ssgkrzt1
VALUES
('940000','0','1','4555474','5555556');
FEHLER: Record „old“ hat noch keinen Wert
DETAIL: Die Tupelstruktur eines Records ohne Wert ist unbestimmt.
CONTEXT: PL/pgSQL-Funktion insert() Zeile 3 bei IF
********** Fehler **********
FEHLER: Record „old“ hat noch keinen Wert
SQL Status:55000
Detail:Die Tupelstruktur eines Records ohne Wert ist unbestimmt.
Kontext:PL/pgSQL-Funktion insert() Zeile 3 bei IF
ich hab keine Ahnugn von old und new… muss ich das vorher irgendwo declaren oder setten?
Langsam nervts ^^
Danke schonmal für deine Hilfe
Gruß Stefan