2017-02-25 1 views
0

Wenn dies ausgeführt wird:kann nicht für SQLSTATEs zwei Handler erklären

DELIMITER $$ 
CREATE TRIGGER tr_test BEFORE UPDATE ON test 
    FOR EACH ROW 
     BEGIN 
     DECLARE EXIT HANDLER FOR SQLSTATE '45000'; 
     DECLARE EXIT HANDLER FOR SQLSTATE '23000'; 
     IF(older_record(NEW.last_action_timestamp, OLD.last_action_timestamp)) THEN 
      SET @rowhash = (SELECT MD5(NEW)); 
      INSERT INTO test_db.test_table SELECT NEW.*, @rowhash; 
      SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'old record'; 
     END IF 
     END 
     $$ 
DELIMITER ; 

bekomme ich folgende Fehlermeldung:

Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer> MariaDB-Serverversion entspricht, für die richtige Syntax, die in der Nähe verwendet werden soll. '; DECLARE EXIT HANDLER FÜR SQLSTATE '23000'; IF (older_record (NEW.l‘in Zeile 4

Antwort

1

A DECLARE Aussage durch eine "Anweisung" befolgt werden müssen - https://dev.mysql.com/doc/refman/5.6/en/declare-handler.html sehen, ist alles, was Sie vielleicht wollen

BEGIN END; 

offenbar ein„leeres Aussage“ist nicht erlaubt?

+0

ich die Frage bearbeiten Sie Ihre Lösung zu implementieren, aber ich bekomme immer noch einen Fehler –

+0

einen weiteren Stich zu machen. –

Verwandte Themen