Ich habe die Funktion jetzt noch einmal im pgAdmin ausgeführt,
statt OLD. mit NEW.
und jetzt scheint es zu funktionieren!
Eine Erklärung habe ich leider nicht. Was genau ist New.?
Ich versuche einen Beleg im cRM mit Postgres zu erstellen. Leider bekomme ich immer wieder diese Fehlermeldung:
record "old" is not assigned yet
the tuple structure of a not-yet-assigned record is indeterminate
PL/pgSQL function "cmb_Trigger_CalcTotal_TrFunc" line 2 at SQL statement
Dies sieht dann so aus:
-- Function: "cmbt_Trigger_CalcTotal_TrFunc"()
-- DROP FUNCTION "cmbt_Trigger_CalcTotal_TrFunc"();
CREATE OR REPLACE FUNCTION "cmbt_Trigger_CalcTotal_TrFunc"()
RETURNS "trigger" AS
$BODY$BEGIN
UPDATE "BELEGE" SET "Summe" =
(SELECT SUM("BELEGPOSTEN"."PostenSumme")
FROM "BELEGPOSTEN"
WHERE "BELEGPOSTEN"."BelegID" = OLD."BelegID");
RETURN NULL;
END;$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION "cmbt_Trigger_CalcTotal_TrFunc"() OWNER TO postgres;
Was für ein Problem hat er mit dem OLD?
Diese Funktion ist von combit direkt erstellt worden. Ich bin noch nicht besonders fit mit Postgres. Eigentlich sollte das ohne Probleme funktionieren. Es handelt sich ja um die Standardinstallation mit Postgres 8.2.
Ich habe die Funktion jetzt noch einmal im pgAdmin ausgeführt,
statt OLD. mit NEW.
und jetzt scheint es zu funktionieren!
Eine Erklärung habe ich leider nicht. Was genau ist New.?
Geändert von daiv (14.08.2007 um 12:33 Uhr)
Leider doch nicht!
Er aktualisiert nicht den gewünschten Datensatz, sondern alle![]()
Hat einer von euch eine Idee?
Wäre
BEGIN
UPDATE "BELEGE" SET "Summe" =
(SELECT SUM("BELEGPOSTEN"."PostenSumme")
FROM "BELEGPOSTEN"
WHERE "BELEGPOSTEN"."BelegID" = "BELEGE"."ID");
richtig?
Wie sieht deine Trigger Definition aus?
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören
Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler
PostgreSQL Service & Support
Dies und anderes erklärt die Doku.
PostgreSQL: Documentation: Manuals: PostgreSQL 8.2: Overview of Trigger Behavior
AndreasFor a row-level trigger, the input data also includes the NEW row for INSERT and UPDATE triggers, and/or the OLD row for UPDATE and DELETE triggers.
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Links: Tobias Bauer - IT- und Funkdienstleistungen - Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen - Funkforum
Lesezeichen