Hallo,
das mit dem Feldnamen ist mir bekannt, aber den möchte ich variabel halten. Daher kam mir die Idee den Inhalt von NEW in eine Variable zu übernehmen (beim Speichern klappt das ja auch) und dann den ersten Wert zu ermitteln. Die Funktionen führen zum Fehler.
Code:
CREATE OR REPLACE FUNCTION lwa.last_change()
RETURNS trigger AS
$BODY$
DECLARE
vPK INTEGER;
vXY TEXT;
BEGIN
vXY = NEW;
vPK = position(',' in vXY);
if (TG_OP = 'UPDATE') THEN
INSERT INTO lwa.tupda(pk_upda,nutzer,datum,zeit,tabelle,feld,wa,wn,pk) VALUES((SELECT MAX(pk_upda)+1 FROM lwa.tupda),current_user,now(),now(),TG_ARGV[0],TG_ARGV[1],OLD,NEW,vXY);
else
INSERT INTO lwa.tupda(pk_upda,nutzer,datum,zeit,tabelle,feld,wa,wn,pk) VALUES((SELECT MAX(pk_upda)+1 FROM lwa.tupda),current_user,now(),now(),TG_ARGV[0],TG_ARGV[1],'',NEW,vXY);
END IF;
RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql VOLATILE; Gruß und Dank Rainer
Lesezeichen