Anzeige:
Ergebnis 1 bis 8 von 8

Thema: mysql und trigger

  1. #1
    Registrierter Benutzer
    Registriert seit
    05.10.2004
    Beiträge
    27

    mysql und trigger

    habe mysql 5.0 installiert und alles funzt auch, aber ich bekomme keien trigger hin...führe ich das beispiel von http://dev.mysql.com/doc/refman/5.0/...e-trigger.html aus, also erst

    CREATE TABLE test1(a1 INT);
    CREATE TABLE test2(a2 INT);
    CREATE TABLE test3(a3 INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
    CREATE TABLE test4(
    a4 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    b4 INT DEFAULT 0
    );

    und dann

    CREATE TRIGGER testref BEFORE INSERT ON test1
    FOR EACH ROW BEGIN
    INSERT INTO test2 SET a2 = NEW.a1;
    DELETE FROM test3 WHERE a3 = NEW.a1;
    UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;
    END;


    meckert er mit nem 1064-Fehler in "near von insert on"

    was mach ich denn da ? In meiner phpinfo steht als mysql auch version 4.17, aber da stimtm wa smit der extension nicht obwohl ich da auch die neueste runtergeladen habe... aber ich habe ja mysql server 5.0 installiert und der mysql administartor zeigt auch beim server und client jeweils version 5.0x an...

    was mache ich denn da falsch ?

    Arbeite mit phpmyadmin,sollte ja aber egal sein !?


    edit: sehe grade das das Wort "trigger" nicht farblich als schlüsselwort dargestellt wird.also kann es gar nicht gehen, habe aber die neueste 5.0.18 version...muss man trigegr noch irgendwo aktivieren ? Ich musste nach der installation auch ziemlich viel konfigurieren,aber das müsste doch trotzdem gehen ?
    Geändert von ramonl (26-02-2006 um 19:55 Uhr)

  2. #2
    Registrierter Benutzer
    Registriert seit
    15.10.2005
    Ort
    Franken
    Beiträge
    362
    Hab lange keine Trigger mehr entwickelt, aber müsste das nicht
    BEFORE INSERT IN
    statt
    BEFORE INSERT ON
    heißen?
    Würde auch den Fehler erklären.

    Das highlighting wird ja von phpmyadmin gemacht, vielleicht da mal ne aktuelle Version ziehen, ältere phpmyadmins waren ja auf mysql4 optimiert, und da gabs noch keine Trigger, deswegen kennt er diesen nicht als Schlüsselwort. Die Datenbank stört das aber eigentlich nicht.
    Dank der Rekursion kann ich IF-Schleifen bauen.

    In neuem Glanz: www.turbohummel.de

  3. #3
    Registrierter Benutzer
    Registriert seit
    05.10.2004
    Beiträge
    27
    nein, das ist es auch nicht... egal was für ein Triggerbeispiel ich nehme, macht der immer diesen Fehler...

  4. #4
    Registrierter Benutzer
    Registriert seit
    30.06.2005
    Beiträge
    155
    na wenn du schon ein beispiel aus dem mysql reference manual verwendest, dann solltest du es auch komplett übernehmen:
    Code:
    DELIMITER |
    
    CREATE TRIGGER testref BEFORE INSERT ON test1
      FOR EACH ROW BEGIN
        INSERT INTO test2 SET a2 = NEW.a1;
        DELETE FROM test3 WHERE a3 = NEW.a1;  
        UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;
      END;
    |
    
    DELIMITER ;
    religion is a virus from outer space

  5. #5
    Registrierter Benutzer
    Registriert seit
    05.10.2004
    Beiträge
    27
    was denn das fürn quatsch ? Der is dafür da wenn man alle queries auf ein mal ausführen will...

    nach deinem beispiel kommt diese 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 'DELIMITER |

    CREATE TRIGGER testref BEFORE INSERT ON test1
    FOR EACH ROW BEG' at line 1


    Habe jetzt noch mal probiert das trigger beispiel der triggerstartseite des referenze manuals zu nehmen, und da wird ein trigger erstellt, auch wenn ich ihn danach nirgendwo zur bearbeitung sehen kann...

    nur passiert trotzd des trigges danach nix, wenn ich datensätze einfüge:

    CREATE TABLE account (acct_num INT, amount DECIMAL(10,2));

    CREATE TRIGGER ins_sum BEFORE INSERT ON account
    FOR EACH ROW SET @sum = @sum + NEW.amount;


    irgendwie auch wieder ein komisches beispiel weil gar keine spalte "sum" angelegt wurde,als die tabelle erstellt wurde... aber auch mit einer von mir angelegten spalte wird da nix aufsummiert beim einfügen von datensätzen.

  6. #6
    Registrierter Benutzer
    Registriert seit
    30.06.2005
    Beiträge
    155
    im mysql reference manual steht genau drinnen warum du delimiter verwenden musst. und wenn du's machst dann funktionierts auch, habs eben ausprobiert.
    religion is a virus from outer space

  7. #7
    Registrierter Benutzer
    Registriert seit
    05.10.2004
    Beiträge
    27
    hallo ? Habe doch gerade die fehlermeldung gepostet die nach dem code kommt, den du gepostet hast...

    logisch funktioniert es bei anderen, sonst wäre es ja ein riesen bug seitens mysql.
    Will ja nur wissen, warum es bei mir nicht geht ?!

  8. #8
    Registrierter Benutzer
    Registriert seit
    30.06.2005
    Beiträge
    155
    könnte auch ein problem mit phpmyadmin sein. probiers halt mal mit der mysql client console.
    religion is a virus from outer space

Lesezeichen

Berechtigungen

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