BEFORE INSERT Trigger zeigt keine Wirkung :/

Hallo,

Ich möchte mit einem Trigger einer Spalte “pos” den zweifachen Wert der “id” Spalte zuweisen und verwende dafür folgenden ON INSERT trigger:

CREATE FUNCTION set_pos() RETURNS trigger AS $emp_stamp$
    BEGIN
      NEW.pos:=NEW.id*2;
      RETURN NEW;
    END;
$emp_stamp$ LANGUAGE plpgsql;

CREATE TRIGGER kladde_insert_pos BEFORE INSERT ON Startkladde
    FOR EACH ROW EXECUTE PROCEDURE set_pos();

Leider funktioniert das ganze nicht, in Startkladde.pos steht immer jener wert, den ich eingefügt habe.

Habts ihr eine Idee was ich falsch mache?

Danke im Vorraus, Clemens

Wie ist der Name Deiner Tabelle, Startkladde oder “Startkladde”?

Andreas

Einfach nur Startkladde, ohne Anfürungsstriche. Aber mich verwirrt die Frage zugegebenermaßen etwas :wink:

lg Clemens

Nun, PG unterscheidet nicht zwischen Groß- und Kleinschreibung, es wird alles zu Kleinschreibung konvertiert, was nicht expliziet durch “ABC” in Großbuchstaben definiert wurde.
Daher meine wilde Vermutung, daß die Tabelle vielleicht in der Tat mit S und nicht mit s beginnt. In diesem Falle würde der TRIGGER natürlich nicht feuern.

Andreas

Wenn der Tabellenname falsch geschrieben wäre, könnte der Trigger schon nicht angelegt werden.
Das würde in einer Fehlermeldung enden.

Kannst du in deiner Triggerfunktion mal eine Debuggingausgabe ausgeben? Mit RAISE NOTICE?
Dann siehst du ja, ob der Trigger überhaupt aufgerufen wird.