Ergebnis 1 bis 2 von 2

Thema: Fehlermeldung: query returned more than one row

  1. #1
    Munis ist offline Neuer Benutzer
    Registriert seit
    19.05.2011
    Beiträge
    1

    Standard Fehlermeldung: query returned more than one row

    Hallo,

    Bin neu hier und habe gleichmal ein Problem Es geht um eine Datenbank, die ähnlich eines sozialen Netzwerkes funktionieren soll. Nun möchte ich eine Funktion schreiben, die etwas in eine neue Tabelle schreibt, falls sich der Freundschaftsgrad zwischen Nutzern ändert. Das sind die betreffenden Tabellen:

    create table freundschaftslog (
    befreundetmit integer references freunde(freundid) not null,
    freundvon integer references freunde(freundid) not null,
    tag timestamp,
    grad_alt integer check (grad_alt between 0 and 10) not null,
    grad_neu integer check (grad_neu between -1 and 10) not null);

    create table istbefreundetmit(
    befreundetmit integer references Freunde(FreundID) on delete cascade,
    freundVon integer references freunde(freundid) on delete cascade,
    freundschaftsgrad integer check (freundschaftsgrad between 0 and 10));

    Was ich bisher als Funktion geschrieben habe ist folgendes:

    CREATE OR REPLACE FUNCTION check_freundschaftsgrad() RETURNS TRIGGER AS $freundschaftsgrad$
    DECLARE
    new_freundschaftsgrad varchar;
    old_freundschaftsgrad varchar;
    befreundetmit varchar;
    BEGIN IF(TG_OP='UPDATE') THEN
    befreundetmit := befreundetmit FROM istbefreundetmit;
    INSERT INTO freundschaftslog(befrmit,frvon,tag,grad_alt,grad_n eu) VALUES (befreundetmit,freundvon,now(),OLD.freundschaftsgr ad,NEW.freundschaftsgrad);
    END IF;
    RETURN NEW;
    END;
    $freundschaftsgrad$ LANGUAGE plpgsql;

    CREATE TRIGGER log_freundschaftsgrad AFTER UPDATE ON istbefreundetmit FOR EACH ROW EXECUTE PROCEDURE check_freundschaftsgrad();
    soweit funktioniert alles (trigger und funktion werden erstellt), nur wenn ich den freundschaftsgrad update kommt folgende fehlermeldung:

    query "SELECT $1 FROM istbefreundetmit" returned more than one row


    Was könnte das Problem sein?
    Ich bin ziemlicher Neuling und entschuldige mich schonmal im voraus, falls es irgend ein dummer Fehler ist.

    Schonmal vielen Dank!

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

    Standard

    Nun, das Problem ist offensichtlich, das deine Anfrage mehr als eine Ergebniszeile findet.

    Wie lässt sich das Problem lösen? Das liegt bei dir.
    - Du könntest einen Unique Index anlegen, der das verhindert.
    - Du könntest schauen, welche Zeilen alles gefunden werden - und ob das die richtigen Ergebnisse sind.
    - Du könntest LIMIT 1 verwenden.
    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

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 22.12.2011, 08:57
  2. Fehlermeldung bei contains abfrage
    Von alex1982 im Forum SQL
    Antworten: 2
    Letzter Beitrag: 11.09.2009, 09:54
  3. Problem Fehlermeldung
    Von faguelce im Forum Konfiguration
    Antworten: 2
    Letzter Beitrag: 26.02.2009, 15:30
  4. Antworten: 0
    Letzter Beitrag: 11.02.2008, 13:28
  5. Fehlermeldung: Non Superuserconnection
    Von mwbond im Forum Programmierung
    Antworten: 3
    Letzter Beitrag: 31.03.2006, 18:48

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