MYSQL TRIGGER

Daniel_CB

Aktives Mitglied
Hallo,

Ich beschäftige mich gerade mal mit Triggern bei MYSQL
# Server Version: 5.2.0-falcon-alpha-community-nt
MYSQL TRIGGER

Dieses "tutorial" versuche ich gerade nachzubauen
soweit scheint auch alles zu klappen bis auf dieses statement


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

Vielen Dank
 
Du musst den DELIMITER (eng: Begrenzungszeichen, Begrenzer, Trennsymbol) auch verändern, damit MySQL die ganze Zeile enlesen kann, sonst ist die Zeilen nach dem ersten Semikolon zu Ende.

Also hättest Du bei Code 3 abgeschlossende Statements und ein unabgeschlossenes:
  1. CREATE TRIGGER testref BEFORE INSERT ON test1
    FOR EACH ROW BEGIN
    INSERT INTO test2 SET a2 = NEW.a1;
  2. DELETE FROM test3 WHERE a3 = NEW.a1;
  3. UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;
  4. END


Damit dies nur ein Statement ist, ändern Du DELIMITER vorher und später wieder in den Standard zurück, wie es in der MySQL-Dokumentation auch steht:

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;


Dadurch wird aus den vorherigen einzelnen Statement, ein einziges, welche bei | endet.
 
Zurück
Oben