Hallo,
ich versuche mich gerade an Triggern und Abhängigkeiten. Kurze Zusammenfassung meines Standes:
Habe eine Urtabelle im Schema Public. In dieser sind Spalten mit Zahlen. Bsp: Spaltenname: x Values: 32222, 43333, 32211 und soweiter.
Nun habe ich eine eine weitere Tabelle in einem eigens dafür angelegtem Schema.
Mithilfe eines After-Triggers und der dazu gebauten Funktion, kopiere ich bestimmte Spalten bei einem INSERT oder DELETE in der Urtabelle in die neue Tabelle.
Nun hat die neue Tabelle eine weitere Spalte welche ich durch eine Abhängigkeit befüllen möchte:
Ich möchte dass mir diese Abhängikeit in der neuen Tabelle bei einem Insert (durch den Trigger) folgendes geprüft und in die weiter Spalte “eingetragen” wird:
Prüfe ob bei dem Insert in die Spalte x ein wert mit 3 oder 4 an erster Stelle geinsert wird und wenn ja, dann schreibe mir bei einer 3 in Spalte S 38532 und bei einer 4 an erster stelle 38533 in Spalte S. wenn es weder 3 oder 4 an erster stelle ist dann insert mit eine 0 in spalte S.
Es wäre mir eine große Hilfe wenn mir da jemand helfen könnte. Ich kenne mich mit den IF-Geschichten absolut nicht aus.
Desweiteren müsste ich wissen ob ich das gleich mit in die Funktion des Insert-triggers bauen muss oder einen eigenen Trigger dafür bauen muss.
Vielen Dank.
Hier noch die Codes was ich bisher habe:
ZielTabelle:
CREATE TABLE "Kopie"."Stammdaten"
(
prj_id character varying(6) NOT NULL,
xcoord double precision,
ycoord double precision,
zcoordb double precision,
longname character varying(40),
projekt character varying(40),
gid serial NOT NULL,
geom "Kopie".geometry(Point,25832)
)
Trigger und Funktion bisher:
CREATE TRIGGER sync
AFTER INSERT OR UPDATE OR DELETE
ON public.geodin_loc_ssgkrzt1
FOR EACH ROW
EXECUTE PROCEDURE public.insert();
CREATE OR REPLACE FUNCTION public.insert()
RETURNS trigger AS
$BODY$
BEGIN
insert into "Kopie"."Stammdaten" (prj_id,xcoord,ycoord,zcoordb,longname,projekt)
select prj_id,xcoord,ycoord,zcoordb,longname,projekt
from public.geodin_loc_ssgkrzt1;
RETURN NULL;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100000;
ALTER FUNCTION public.insert()
OWNER TO postgres;