Datensätze vor update in anderer Tabelle speichern

Hallo und Guten Tag,

ich möchte einen geänderten Datensatz, bevor er geändert wird, in einer zweiten baugleichen Tabelle (allerdings ohne Constraints und Primärschlüssel) speichern. Die Quelltabelle heißt data_standard_pitzer, die Zieltabelle heißt log_data_standard_pitzer. In der update function habe ich das so versucht:

INSERT INTO "public"."log_data_standard_pitzer" select * from old;

Wenn ich nun einen Datensatz ändere passiert rein gar nichts. Es kommt auch keine Fehlermeldung. Es geht auch nicht ohne Schema oder ohne Häkchen. Es geht ebenfalls nicht, wenn ich die Zielfelder alle einzeln anspreche.

Dann kam mir noch der Gedanke, es mit einer eigenen Function zu versuchen (hier probeweise nur mit drei Spalten, die Tabellen enthalten eigentlich mehr, pcon und datatype sind Primärschlüssel der Quelltabelle):

CREATE FUNCTION fn_add-log_data_standard_pitzer(in_pcon character varying, in_datatype character varying, in_remark character varying) RETURNS void
AS $$begin
insert into log_data_standard_pitzer (pcon, datatype, remark) values (in_pcon, in_datatype, in_remark);
end;$$
LANGUAGE plpgsql;

Diese könnte ich in der update-Funktion dann aufrufen mit

select fn_add-log_data_standard_pitzer(old.pcon, old.datatype, old.remark

Doch leider scheitere ich schon mit dem create function code (SQL-Fehler).

Kann mir jemand einen Tip geben? Das kann doch nicht so schwer sein. Ich habe auch keinen passenden Thread hier im Forum gefunden.

Eremit

PgFoundry: Table Audit: Project Info

Das muss ich mir jetzt erst mal reinziehen. Schade, ich hatte gehofft, dass es einfacher gehen könnte.
Eremit

Klar geht das einfacher: schreibe einfach einen passenden Trigger dafür, nebst Triggerfunktion. Nix anderes mach ads sein Tablelog…

Andreas

Es funktioniert!!! :slight_smile:
Dennoch würde mich interessieren, wo der Fehler in meinem eigenen Code liegt.
Jedenfalls vielen Dank für den nützlichen Link! Lebt dieses Projekt denn eigentlich noch?
Gruß
Eremit

Ja, dieses Projekt lebt noch.
Derzeit gibt es bloß nichts hinzuzufügen.

Vielleicht schreibe ich das mal komplett neu …