ich kenne mich ehrlich gesagt mit triggern nicht besonders aus. Wenn ich eine SQL abfrage habe wie z.B.
ALTER TABLE test RENAME COLUMN Wert1 TO WERT2;
muss ich dann unbedingt eine Funktion in c schreiben oder ist es auch möglich dies in plpgsql zu schreiben. Wenn ja wie.
Und ist es überhaupt möglich jede beliebige sql mit plpgsql “abzubilden”?
Die Dokus zu plpgsql finde ich etwas dürftig oder kennt da jemand eine gute Hilfe?
Vielen Dank schon einmal
Also ich kann gerade nicht wirklich erkennen, was du erreichen möchtest und was dies genau mit Triggern zu tun hat. Kannst du das bitte mal als Problem formulieren?
ich weiß auch, dass es dort einen Absatz zu rename gibt, die folgendermaßen aussieht
RENAME id TO user_id;
meine funktion müsste demnach etwa so aussehen:
CREATE FUNCTION test() RETURNS trigger AS
DECLARE
wert1 double precision;
BEGIN
RENAME wert1 TO wert2;
END;
LANGUAGE ‘plpgsql’ VOLATILE;
aber da fehlt wohl noch etwas. Vielleicht kann mir jemand auf die Sprünge helfen. danke jürgen
ok
ich versuchs zu erklären:
ich muss Datensätze zu meiner Tabelle hinzufügen, die sich nur beim Namen einer Spalte unterscheiden. Damit diese Daten bei einem Update eingefügt werden, muss ich beim Update den Spaltennamen ändern und anschließend wieder zurücksetzen.
Das wird, denke ich schiefgehen. Der Parser wird dir noch vor dem Aufrufen deiner Funktion einen Fehler werfen, wenn der Trigger für die Tabelle gerufen wird.
Aber:
An sich ist das eine Aufgabe für die Applikation, du solltest nie und nimmer live in deiner DB das Layout ändern. Wirklich nie!
trotzdem bleibt mein Problem bestehen, denn meine sql wird von shp2pgsql automatisch erzeugt, so dass mir dann nur bleibt die sql Datei abzuändern. Das muss man dann aber leider bei jedem Update machen.
es gibt keine zweite tabelle, sondern nur eine sql Datei, die die Attribute aus einer dbf (shape Datei für postgisler) in diese tabelle einfügen soll. Ich dachte aber auch gerade daran die Daten zuerst in eine andere Tabelle zu lesen, dann von dort aus die Daten zu kopieren und anschließend die Tabelle wieder zu droppen oder so ähnlich.
vielleicht muss ich noch hinzufügen, dass es sich bei meiner tabelle um eine geom tabelle handelt, ich also die postgis erweiterung benutze. deshalb muss ich meine sql auch mit dem shapeloader erzeugen, damit die geometrie tabelle und die geom spalte angelegt werden.
trotzdem mal danke für all die hinweise
jürgen