Ergebnis 1 bis 6 von 6

Thema: Problem bei Trigger (total n00b am start)

  1. #1
    DOOFY ist offline Neuer Benutzer
    Registriert seit
    26.01.2009
    Beiträge
    3

    Standard Problem bei Trigger (total n00b am start)

    Hi,
    ich habe net viel Ahnung, muss aber ne Aufgabe in IT, in der Schule lösen. Habe 2 Tabellen, "Mitglieder" und "Gegenstand"! So nun soll ich mit einen Trigger überprüfen, dass wenn in die Tabelle "Gegenstand" ein neuer Gegenstand eingetragen wird, dass das Mitglied der den Gegesntand eintragen will eine Kaution eingezahlt hat(also die Spalte Kaution >= 0 ist)!
    So dafür habe ich folgenden Trigger Probiert!

    CREATE TRIGGER darf_user_mitmachen BEFORE INSERT ON Gegenstaende
    FOR EACH
    ROW
    BEGIN IF(
    SELECT Kautionsbetrag
    FROM Mitglieder
    WHERE NEW.BNr = MNr ) <=0
    THEN
    RAISERROR( 'Sie muessen zuerst eine Kaution einzahlen, oder Ihren Kautionsbetrag ausgleichen!', 16, 1)
    ROLLBACK
    END IF
    END;

    Die Fehlermeldung:

    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '( 'Sie muessen zuerst eine Kaution einzahlen, oder Ihren Kautionsbetrag ausgleic' at line 9

    Wenn ich jetzt das RAISERROR entferne kommt folgende Fehlermeldung:

    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'END IF
    END' at line 10

    werde einfach nicht schlau draus sry;( was ist/könnte der Fehler sein?

    ps: obwohl ich nicht weiß, ob das ROllBACK sinn macht wenn ichs eh BEFORE mache und ob ich BEFORE bei einem INSERT benutzen kann/darf! Hab aber dazu nix in meinen Unterlagen gefunden und auch nicht drüber im i net gelesn(obwohl es nicht ausgeschlossen ist, dass ich es überlesen habe...)!

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

    Standard

    Zitat Zitat von DOOFY Beitrag anzeigen

    werde einfach nicht schlau draus sry;( was ist/könnte der Fehler sein?
    Falsches Forum, hier geht es um PostgreSQL. Ich könnte Dir den Trigger zeigen, aber er würde Dir nicht helfen, weil PostgreSQL != MySQL.

    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

  3. #3
    DOOFY ist offline Neuer Benutzer
    Registriert seit
    26.01.2009
    Beiträge
    3

    Standard

    arg trozdem danke^^, kann mir jmd vllt auch diesen trigger in MySQL erklären?^^ bzw mir meinen Fehler sagen!?
    Geändert von DOOFY (26.01.2009 um 12:57 Uhr)

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

    Standard

    Zitat Zitat von DOOFY Beitrag anzeigen
    arg trozdem danke^^
    Btw, ein ROLLBACK innerhalb der Funktion wird nicht gehen.

    Code:
    est=# create table mitglieder (id int primary key, kaution numeric(10,2));
    NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "mitglieder_pkey" for table "mitglieder"
    CREATE TABLE
    test=# create table gegenstand(id int primary key, person_id int references person);
    NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "gegenstand_pkey" for table "gegenstand"
    CREATE TABLE
    test=# create or replace function check_mitglied() returns TRIGGER as $$declare k numeric(10,2); begin select into k kaution from mitglieder where id=NEW.person_id; if k <= 0 then raise exception 'Keine Kaution'; end if; return NEW; end; $$ language plpgsql;
    CREATE FUNCTION
    test=# create trigger trg_kaution before insert on gegenstand for each row execute procedure check_mitglied();
    CREATE TRIGGER
    test=# insert into mitglieder values (1,10);
    INSERT 0 1
    test=# insert into mitglieder values (2,0);
    INSERT 0 1
    test=# insert into gegenstand values (1,1);
    INSERT 0 1
    test=# insert into gegenstand values (2,2);
    ERROR:  Keine Kaution
    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

  5. #5
    ads
    ads ist gerade online Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.055

    Standard

    Zitat Zitat von DOOFY Beitrag anzeigen
    arg trozdem danke^^, kann mir jmd vllt auch diesen trigger in MySQL erklären?^^ bzw mir meinen Fehler sagen!?
    Keine Ahnung, ich schreibe keien MySQL Trigger.

    Vielleicht sollte euer Lehrer/Prof euch an den (zumeist kostenpflichtigen) Support vermitteln, ansonsten gibt es auch diverse Foren, die sich nur mit MySQL beschäftigen. Vielleicht dort mal fragen.
    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
    DOOFY ist offline Neuer Benutzer
    Registriert seit
    26.01.2009
    Beiträge
    3

    Standard

    ok danke ich werds mal in anderen Foren probieren!

Ähnliche Themen

  1. Problem mit After Trigger
    Von Lara im Forum PL/pgSQL
    Antworten: 5
    Letzter Beitrag: 18.03.2011, 10:59
  2. Antworten: 1
    Letzter Beitrag: 11.03.2009, 15:37
  3. Eine neue Suchmaschine ist am Start
    Von Gisman im Forum Verschiedenes
    Antworten: 5
    Letzter Beitrag: 28.07.2008, 14:48
  4. Scheiterte beim start von intidb: 1
    Von TomBola im Forum Installation von PostgreSQL
    Antworten: 2
    Letzter Beitrag: 19.09.2007, 16:29
  5. Problem mit Trigger und Time-Felder
    Von hohensee im Forum Trigger und Funktionen
    Antworten: 2
    Letzter Beitrag: 16.08.2007, 21:34

Stichworte

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