Ergebnis 1 bis 6 von 6

Thema: record "old" is not assigned yet

  1. #1
    daiv ist offline Neuer Benutzer
    Registriert seit
    13.08.2007
    Beiträge
    15

    Standard record "old" is not assigned yet

    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.

  2. #2
    daiv ist offline Neuer Benutzer
    Registriert seit
    13.08.2007
    Beiträge
    15

    Standard

    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)

  3. #3
    daiv ist offline Neuer Benutzer
    Registriert seit
    13.08.2007
    Beiträge
    15

    Standard

    Leider doch nicht!

    Er aktualisiert nicht den gewünschten Datensatz, sondern alle

    Hat einer von euch eine Idee?

  4. #4
    daiv ist offline Neuer Benutzer
    Registriert seit
    13.08.2007
    Beiträge
    15

    Standard

    Wäre

    BEGIN
    UPDATE "BELEGE" SET "Summe" =
    (SELECT SUM("BELEGPOSTEN"."PostenSumme")
    FROM "BELEGPOSTEN"
    WHERE "BELEGPOSTEN"."BelegID" = "BELEGE"."ID");

    richtig?

  5. #5
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.056

    Standard

    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

  6. #6
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von daiv Beitrag anzeigen
    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.?
    Dies und anderes erklärt die Doku.

    PostgreSQL: Documentation: Manuals: PostgreSQL 8.2: Overview of Trigger Behavior

    For 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.
    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

Ähnliche Themen

  1. Antworten: 7
    Letzter Beitrag: 03.02.2012, 09:58
  2. Problem Function geht nicht "invalid input syntax for integer: (0,t,)"
    Von cfi im Forum Trigger und Funktionen
    Antworten: 2
    Letzter Beitrag: 05.09.2008, 08:10
  3. Antworten: 4
    Letzter Beitrag: 16.06.2008, 10:42
  4. "Group-by" und "max" Funktionen verknüpfen
    Von superguddy777 im Forum SQL
    Antworten: 1
    Letzter Beitrag: 22.08.2007, 08:35
  5. OLD.sum(...) ->record "old" has no field "sum"
    Von Mster im Forum Trigger und Funktionen
    Antworten: 5
    Letzter Beitrag: 18.01.2007, 15:00

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum